Advanced Programming with R: Leveraging Tidyverse and Admiral for ADaM Dataset Creation with a Comparison to SAS

PharmaSUG 2025 - Paper OS-167

Author

Joshua J. Cook & Richann Jean Watson

Published

May 12, 2025

Setup

/* clear out work directory */
proc datasets lib = work nolist memtype = data kill force;
quit;

options validvarname = v7;
libname sdtm 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\SDTM';
libname adam 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM';
libname cadam 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM\CDISC' access = readonly;
1          proc datasets lib = work nolist memtype = data kill force;
2          quit;

NOTE: PROCEDURE DATASETS used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

3          
4          options validvarname = v7;
5          libname sdtm 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\SDTM';
NOTE: Libref SDTM was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\SDTM
6          libname adam 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM';
NOTE: Libref ADAM was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM
7          libname cadam 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM\CDISC' access =
7        ! readonly;
NOTE: Libref CADAM was successfully assigned as follows: 
      Engine:        V9 
      Physical Name: C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\Data\ADaM\CDISC
# Clear out the current workspace (similar to clearing the 'work' library)
rm(list = ls())

# Install required packages if not already installed
# Define the list of required packages
required_packages <- c("tidyverse", "safetyData", "admiral", "readxl", "gt", "haven", "waldo")

# Function to install missing packages
install_if_missing <- function(packages) {
  installed_packages <- rownames(installed.packages())
  missing_packages <- packages[!packages %in% installed_packages]
  if (length(missing_packages) > 0) {
    install.packages(missing_packages, dependencies = TRUE)
  }
}

# Install any missing packages
install_if_missing(required_packages)

# Load required libraries
library(tidyverse)  # Includes dplyr, purrr, stringr, and other necessary tidy tools
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(safetyData) # Includes all the datasets from CDISC
library(admiral) # ADaM derivations
library(readxl) # Reading Excel files
library(gt) # Fancy tables
library(haven) # Reading xpt files
library(waldo) # Compares R objects

Shell Creation

/**************************************************/
/*** BEGIN SECTION TO CREATE THE SHELL DATA SET ***/
/**************************************************/
libname specs 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\adam_define.xlsx';

data adslspec;
   length allvars $2000;
   set specs.'ADSL$'n end = eof;
   retain allvars;
   length dc $200;
   call missing(dc, dn);
   allvars = catx(' ', allvars, variable);
   if eof then call symputx('allvars', allvars);
run;

libname specs clear;
   
/* OPTION 1 - CREATING SHELL DATA SET */
/* create all numeric variables */
proc transpose data = adslspec out = tspec_n;
   var dn;
   id variable;
   idlabel label;
   where lowcase(type) in ('integer' 'float');
run;

/* create all character variables */
proc transpose data = adslspec out = tspec_c;
   var dc;
   id variable;
   idlabel label;
   where lowcase(type) not in ('integer' 'float');
run;

/* create master shell */
data adslskel;
   retain &allvars;
   set tspec_: (drop = _:);
run;

/* OPTION 2 - CREATING SHELL DATA SET */
data _null_;
   set adslspec end = eof;
   if _n_ = 1 then do;   
      call execute ('data adslskel;');
      call execute ('   attrib');
   end;
   if lowcase(type) not in ('integer' 'float') then __length = cats('$', length, '.');
   else __length = cats(length, '.');
   if not missing(DISPLAY_FORMAT) then __format = catx(' ', 'format =', DISPLAY_FORMAT);
   attrbstmt = catx(' ', VARIABLE, 'label = ', quote(strip(LABEL)), 'length = ', __length, __format);
   call execute (attrbstmt);
   if eof then do;
      call execute('; call missing(of _all_); stop; run;');
   end;
run;
   
/************************************************/
/*** END SECTION TO CREATE THE SHELL DATA SET ***/
/************************************************/
1          /**************************************************/
2          /*** BEGIN SECTION TO CREATE THE SHELL DATA SET ***/
3          /**************************************************/
4          libname specs 'C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\adam_define.xlsx';
NOTE: Libref SPECS was successfully assigned as follows: 
      Engine:        EXCEL 
      Physical Name: C:\Users\gonza\OneDrive - datarichconsulting.com\Desktop\GitHub\Beautiful_Minds\adam_define.xlsx
5          
6          data adslspec;
7             length allvars $2000;
8             set specs.'ADSL$'n end = eof;
9             retain allvars;
10            length dc $200;
11            call missing(dc, dn);
12            allvars = catx(' ', allvars, variable);
13            if eof then call symputx('allvars', allvars);
14         run;

NOTE: There were 48 observations read from the data set SPECS.'ADSL$'n.
NOTE: The data set WORK.ADSLSPEC has 48 observations and 10 variables.
NOTE: DATA statement used (Total process time):
      real time           0.07 seconds
      cpu time            0.07 seconds
      

15         
16         libname specs clear;
NOTE: Libref SPECS has been deassigned.
2                                                          The SAS System                                20:17 Monday, March 3, 2025

17         
18         /* OPTION 1 - CREATING SHELL DATA SET */
19         /* create all numeric variables */
20         proc transpose data = adslspec out = tspec_n;
21            var dn;
22            id variable;
23            idlabel label;
24            where lowcase(type) in ('integer' 'float');
25         run;

NOTE: There were 20 observations read from the data set WORK.ADSLSPEC.
      WHERE LOWCASE(type) in ('float', 'integer');
NOTE: The data set WORK.TSPEC_N has 1 observations and 21 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.04 seconds
      cpu time            0.03 seconds
      

26         
27         /* create all character variables */
28         proc transpose data = adslspec out = tspec_c;
29            var dc;
30            id variable;
31            idlabel label;
32            where lowcase(type) not in ('integer' 'float');
33         run;

NOTE: There were 28 observations read from the data set WORK.ADSLSPEC.
      WHERE LOWCASE(type) not in ('float', 'integer');
NOTE: The data set WORK.TSPEC_C has 1 observations and 29 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.04 seconds
      cpu time            0.03 seconds
      

34         
35         /* create master shell */
36         data adslskel;
37            retain &allvars;
38            set tspec_: (drop = _:);
39         run;

NOTE: There were 1 observations read from the data set WORK.TSPEC_C.
NOTE: There were 1 observations read from the data set WORK.TSPEC_N.
NOTE: The data set WORK.ADSLSKEL has 2 observations and 48 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
      

40         
41         /* OPTION 2 - CREATING SHELL DATA SET */
42         data _null_;
43            set adslspec end = eof;
44            if _n_ = 1 then do;
45               call execute ('data adslskel;');
46               call execute ('   attrib');
47            end;
3                                                          The SAS System                                20:17 Monday, March 3, 2025

48            if lowcase(type) not in ('integer' 'float') then __length = cats('$', length, '.');
49            else __length = cats(length, '.');
50            if not missing(DISPLAY_FORMAT) then __format = catx(' ', 'format =', DISPLAY_FORMAT);
51            attrbstmt = catx(' ', VARIABLE, 'label = ', quote(strip(LABEL)), 'length = ', __length, __format);
52            call execute (attrbstmt);
53            if eof then do;
54               call execute('; call missing(of _all_); stop; run;');
55            end;
56         run;

NOTE: There were 48 observations read from the data set WORK.ADSLSPEC.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

NOTE: CALL EXECUTE generated line.
1         + data adslskel;
2         +    attrib
3         + STUDYID label = "Study Identifier" length = $12.
4         + USUBJID label = "Unique Subject Identifier" length = $11.
5         + SUBJID label = "Subject Identifier for the Study" length = $4.
6         + SITEID label = "Study Site Identifier" length = $3.
7         + SITEGR1 label = "Pooled Site Group 1" length = $3.
8         + ARM label = "Description of Planned Arm" length = $20.
9         + TRT01P label = "Planned Treatment for Period 01" length = $20.
10        + TRT01PN label = "Planned Treatment for Period 01 (N)" length = 8.
11        + TRT01A label = "Actual Treatment for Period 01" length = $20.
12        + TRT01AN label = "Actual Treatment for Period 01 (N)" length = 8.
13        + TRTSDT label = "Date of First Exposure to Treatment" length = 8. format = DATE9.
14        + TRTEDT label = "Date of Last Exposure to Treatment" length = 8. format = DATE9.
15        + TRTDUR label = "Duration of Treatment (days)" length = 8.
16        + AVGDD label = "Avg Daily Dose (as planned)" length = 8.
17        + CUMDOSE label = "Cumulative Dose (as planned)" length = 8.
18        + AGE label = "Age" length = 8.
19        + AGEGR1 label = "Pooled Age Group 1" length = $5.
20        + AGEGR1N label = "Pooled Age Group 1 (N)" length = 8.
21        + AGEU label = "Age Units" length = $5.
22        + RACE label = "Race" length = $32.
23        + RACEN label = "Race (N)" length = 8.
24        + SEX label = "Sex" length = $1.
25        + ETHNIC label = "Ethnicity" length = $22.
26        + SAFFL label = "Safety Population Flag" length = $1.
27        + ITTFL label = "Intent-To-Treat Population Flag" length = $1.
28        + EFFFL label = "Efficacy Population Flag" length = $1.
29        + COMP8FL label = "Completers of Week 8 Population Flag" length = $1.
30        + COMP16FL label = "Completers of Week 16 Population Flag" length = $1.
31        + COMP24FL label = "Completers of Week 24 Population Flag" length = $1.
32        + DISCONFL label = "Did the Subject Discontinue the Study?" length = $1.
33        + DSRAEFL label = "Discontinued due to AE?" length = $1.
34        + DTHFL label = "Subject Died?" length = $1.
35        + BMIBL label = "Baseline BMI (kg/m^2)" length = 8.
36        + BMIBLGR1 label = "Pooled Baseline BMI Group 1" length = $6.
37        + HEIGHTBL label = "Baseline Height (cm)" length = 8.
38        + WEIGHTBL label = "Baseline Weight (kg)" length = 8.
39        + EDUCLVL label = "Years of Education" length = 8.
40        + DISONSDT label = "Date of Onset of Disease" length = 8. format = DATE9.
41        + DURDIS label = "Duration of Disease (Months)" length = 8.
4                                                          The SAS System                                20:17 Monday, March 3, 2025

42        + DURDSGR1 label = "Pooled Disease Duration Group 1" length = $4.
43        + VISIT1DT label = "Date of Visit 1" length = 8. format = DATE9.
44        + RFSTDTC label = "Subject Reference Start Date/Time" length = $20.
45        + RFENDTC label = "Subject Reference End Date/Time" length = $20.
46        + VISNUMEN label = "End of Trt Visit (Vis 12 or Early Term.)" length = 8.
47        + RFENDT label = "Date of Discontinuation/Completion" length = 8. format = DATE9.
48        + DCDECOD label = "Standardized Disposition Term" length = $27.
49        + DCREASCD label = "Reason for Discontinuation" length = $18.
50        + MMSETOT label = "MMSE Total" length = 8.
51        + ; call missing(of _all_); stop; run;

NOTE: The data set WORK.ADSLSKEL has 0 observations and 48 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

57         /************************************************/
58         /*** END SECTION TO CREATE THE SHELL DATA SET ***/
59         /************************************************/

ADSLSPEC: 48 observations

TSPEC_N: 1 observation - all values null except for DN

TSPEC_C: 1 observation - all values null except for DC

ADLSKEL: Option 1 has 2 observations (not shown); Option 2 has 0 observations
# Load the ADSL specifications
specs_path <- "../data/define_richann.xlsx"  
adsl_specs <- read_xlsx(specs_path, sheet = "ADSL")

# Define a mapping from spec types to R types
type_mapping <- c(
  "text" = "character",
  "integer" = "integer",
  "float" = "double",
  "datetime" = "Date"
)

# Map the types in the specs to R-compatible types
adsl_specs <- adsl_specs %>%
  mutate(
    Mapped_Type = type_mapping[Type] %>% replace_na("character")
  )

# Create an empty shell based on the specifications
adsl_shell <- tibble()
for (i in seq_len(nrow(adsl_specs))) {
  col_name <- adsl_specs$Variable[i]
  col_type <- adsl_specs$Type[i]
  adsl_shell[[col_name]] <- switch(
    col_type,
    "text" = character(),
    "integer" = integer(),
    "float" = numeric(),
    "datetime" = as.Date(character()),
    stop("Unsupported type")
  )
  attr(adsl_shell[[col_name]], "label") <- adsl_specs$Label[i] # PROC Transpose
}

str(adsl_shell)
tibble [0 × 48] (S3: tbl_df/tbl/data.frame)
 $ STUDYID : chr(0) 
  ..- attr(*, "label")= chr "Study Identifier"
 $ USUBJID : chr(0) 
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ SUBJID  : chr(0) 
  ..- attr(*, "label")= chr "Subject Identifier for the Study"
 $ SITEID  : chr(0) 
  ..- attr(*, "label")= chr "Study Site Identifier"
 $ SITEGR1 : chr(0) 
  ..- attr(*, "label")= chr "Pooled Site Group 1"
 $ ARM     : chr(0) 
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ TRT01P  : chr(0) 
  ..- attr(*, "label")= chr "Planned Treatment for Period 01"
 $ TRT01PN : int(0) 
  ..- attr(*, "label")= chr "Planned Treatment for Period 01 (N)"
 $ TRT01A  : chr(0) 
  ..- attr(*, "label")= chr "Actual Treatment for Period 01"
 $ TRT01AN : int(0) 
  ..- attr(*, "label")= chr "Actual Treatment for Period 01 (N)"
 $ TRTSDT  : int(0) 
  ..- attr(*, "label")= chr "Date of First Exposure to Treatment"
 $ TRTEDT  : int(0) 
  ..- attr(*, "label")= chr "Date of Last Exposure to Treatment"
 $ TRTDUR  : int(0) 
  ..- attr(*, "label")= chr "Duration of Treatment (days)"
 $ AVGDD   : num(0) 
  ..- attr(*, "label")= chr "Avg Daily Dose (as planned)"
 $ CUMDOSE : num(0) 
  ..- attr(*, "label")= chr "Cumulative Dose (as planned)"
 $ AGE     : int(0) 
  ..- attr(*, "label")= chr "Age"
 $ AGEGR1  : chr(0) 
  ..- attr(*, "label")= chr "Pooled Age Group 1"
 $ AGEGR1N : int(0) 
  ..- attr(*, "label")= chr "Pooled Age Group 1 (N)"
 $ AGEU    : chr(0) 
  ..- attr(*, "label")= chr "Age Units"
 $ RACE    : chr(0) 
  ..- attr(*, "label")= chr "Race"
 $ RACEN   : int(0) 
  ..- attr(*, "label")= chr "Race (N)"
 $ SEX     : chr(0) 
  ..- attr(*, "label")= chr "Sex"
 $ ETHNIC  : chr(0) 
  ..- attr(*, "label")= chr "Ethnicity"
 $ SAFFL   : chr(0) 
  ..- attr(*, "label")= chr "Safety Population Flag"
 $ ITTFL   : chr(0) 
  ..- attr(*, "label")= chr "Intent-To-Treat Population Flag"
 $ EFFFL   : chr(0) 
  ..- attr(*, "label")= chr "Efficacy Population Flag"
 $ COMP8FL : chr(0) 
  ..- attr(*, "label")= chr "Completers of Week 8 Population Flag"
 $ COMP16FL: chr(0) 
  ..- attr(*, "label")= chr "Completers of Week 16 Population Flag"
 $ COMP24FL: chr(0) 
  ..- attr(*, "label")= chr "Completers of Week 24 Population Flag"
 $ DISCONFL: chr(0) 
  ..- attr(*, "label")= chr "Did the Subject Discontinue the Study?"
 $ DSRAEFL : chr(0) 
  ..- attr(*, "label")= chr "Discontinued due to AE?"
 $ DTHFL   : chr(0) 
  ..- attr(*, "label")= chr "Subject Died?"
 $ BMIBL   : num(0) 
  ..- attr(*, "label")= chr "Baseline BMI (kg/m^2)"
 $ BMIBLGR1: chr(0) 
  ..- attr(*, "label")= chr "Pooled Baseline BMI Group 1"
 $ HEIGHTBL: num(0) 
  ..- attr(*, "label")= chr "Baseline Height (cm)"
 $ WEIGHTBL: num(0) 
  ..- attr(*, "label")= chr "Baseline Weight (kg)"
 $ EDUCLVL : int(0) 
  ..- attr(*, "label")= chr "Years of Education"
 $ DISONSDT: int(0) 
  ..- attr(*, "label")= chr "Date of Onset of Disease"
 $ DURDIS  : num(0) 
  ..- attr(*, "label")= chr "Duration of Disease (Months)"
 $ DURDSGR1: chr(0) 
  ..- attr(*, "label")= chr "Pooled Disease Duration Group 1"
 $ VISIT1DT: int(0) 
  ..- attr(*, "label")= chr "Date of Visit 1"
 $ RFSTDTC : 'Date' num(0) 
 - attr(*, "label")= chr "Subject Reference Start Date/Time"
 $ RFENDTC : 'Date' num(0) 
 - attr(*, "label")= chr "Subject Reference End Date/Time"
 $ VISNUMEN: int(0) 
  ..- attr(*, "label")= chr "End of Trt Visit (Vis 12 or Early Term.)"
 $ RFENDT  : int(0) 
  ..- attr(*, "label")= chr "Date of Discontinuation/Completion"
 $ DCDECOD : chr(0) 
  ..- attr(*, "label")= chr "Standardized Disposition Term"
 $ DCREASCD: chr(0) 
  ..- attr(*, "label")= chr "Reason for Discontinuation"
 $ MMSETOT : int(0) 
  ..- attr(*, "label")= chr "MMSE Total"

Data Retrieval

/**********************************************/
/*** BEGIN SECTION TO RETRIEVE ALL THE DATA ***/
/**********************************************/
/* demographic */
data src_dm (drop = __orig:);
   set SDTM.DM (rename = (AGEU = __origageu RACE = __origrace ETHNIC = __origethnic));
   where ARMCD ne 'Scrnfail';
   length AGEU $5 RACE $32 ETHNIC $22 AGEGR1 $5;
   AGEU = strip(__origageu);
   RACE = strip(__origrace);
   ETHNIC = strip(__origethnic);

   if input(SITEID, best.) in (702 706 707 711 714 715 717) then SITEGR1 = '900';
   else SITEGR1 = SITEID;
   TRT01P = ARM;
   if ARM =: 'Placebo' then TRT01PN = 0;
   else if find(ARM, 'Low', 'i') then TRT01PN = 54;
   else if find(ARM, 'High', 'i') then TRT01PN = 81;

   if . < AGE < 65 then AGEGR1 = '<65';
   else if 65 <= AGE <= 80 then AGEGR1 = '65-80';
   else if AGE > 80 then AGEGR1 = '>80';
   if not missing(AGEGR1) then AGEGR1N = whichc(first(AGEGR1), '<', '6', '>');

   if not missing(RACE) then RACEN = whichc(substr(RACE, 1, 2), 'WH', 'BL', 'xx', 'xx', 'xx', 'AM', 'AS');

   if not missing(ARMCD) then ITTFL = 'Y';
   else ITTFL = 'N';

   format RFENDT date9.;
   if not missing(RFENDTC) then RFENDT = input(RFENDTC, e8601da.);
run;

/* disposition */
data src_ds (keep = USUBJID VISNUMEN DC: DISCONFL DSRAEFL);
   set SDTM.DS;
   by USUBJID;
   retain VISNUMEN DCDECOD DCREASCD;
   length DCDECOD $27 DCREASCD $18;
   if first.USUBJID then call missing(VISNUMEN, DCDECOD, DCREASCD);

   if DSCAT = 'DISPOSITION EVENT' then do;
      if VISITNUM ^= 13 then VISNUMEN = VISITNUM;
      else VISNUMEN = 12;

      DCDECOD = DSDECOD;
      if DSDECOD not in: ('STUDY' 'WITH' 'SCRE' 'LOST') then DCREASCD = tranwrd(propcase(DSDECOD), ' Of ', ' of ');
      else if DSDECOD =: 'STUDY' then DCREASCD = 'Sponsor Decision';
      else if DSDECOD =: 'WITH' then DCREASCD = 'Withdrew Consent';
      else if DSDECOD =: 'SCRE' then DCREASCD = 'I/E Not Met';
      else if DSDECOD =: 'LOST' then DCREASCD = 'Lost to Follow-up';

      if DSTERM = 'PROTOCOL ENTRY CRITERIA NOT MET' then DCREASCD = 'I/E Not Met';
   end;
   if last.USUBJID;
   if DCDECOD ^= 'COMPLETED' then DISCONFL = 'Y';
   if DCDECOD = 'ADVERSE EVENT' then DSRAEFL = 'Y';
run;

/* baseline vitals */
proc sort data = SDTM.VS out = vs;
   by USUBJID VSTESTCD;
   where (VSTESTCD = 'HEIGHT' and VISITNUM = 1) or (VSTESTCD = 'WEIGHT' and VISITNUM = 3);
run;

proc transpose data = vs
               out = src_vs (drop = _:)
               suffix = BL;
   by USUBJID;
   id VSTESTCD;
   var VSSTRESN;
run;

/* treatment start and subject visit */
data src_sv (keep = USUBJID VISIT1DT TRTSDT __vis:);
   set SDTM.SV;
   by USUBJID;
   format VISIT1DT TRTSDT __vis4dt __vis8dt __vis10dt __vis12dt date9.;
   retain VISIT1DT TRTSDT __vis4dt __vis8dt __vis10dt __vis12dt;
   if first.USUBJID then call missing(VISIT1DT, TRTSDT, of __vis:);
   if VISITNUM = 1 then VISIT1DT = input(SVSTDTC, e8601da.);
   else if VISITNUM = 3 then TRTSDT = input(SVSTDTC, e8601da.);
   else if VISITNUM = 4 then __vis4dt = input(SVSTDTC, e8601da.);
   else if VISITNUM = 8 then __vis8dt = input(SVSTDTC, e8601da.);
   else if VISITNUM = 10 then __vis10dt = input(SVSTDTC, e8601da.);
   else if VISITNUM = 12 then __vis12dt = input(SVSTDTC, e8601da.);
   if last.USUBJID;
run;

/* primary diagnosis */
data src_mh;
   set SDTM.MH;
   where MHCAT = 'PRIMARY DIAGNOSIS';
   format DISONSDT date9.;
   if not missing(MHSTDTC) then DISONSDT = input(MHSTDTC, e8601da.);
   keep USUBJID DISONSDT;
run;

/* mini-mental state and ADAS-Cog and CIBIC post-baseline */
data src_qs;
   set SDTM.QS;
   by USUBJID;
   retain MMSETOT __effalz __effcli;
   if first.USUBJID then do;
      MMSETOT = 0;
      __effalz = 0;
      __effcli = 0;
   end;
   if QSCAT =: 'MINI' then MMSETOT = sum(MMSETOT, input(QSORRES, best.));
   if QSCAT =: 'ALZ' and VISITNUM > 3 then __effalz = 1;
   if QSCAT =: 'CLI' and VISITNUM > 3 then __effcli = 1;
   if last.USUBJID;
   keep USUBJID MMSETOT __eff:;
run;

/* exposure */
data ex;
   set SDTM.EX;
   format exstdt exendt date9.;
   if not missing(EXSTDTC) then exstdt = input(EXSTDTC, e8601da.);
   if not missing(EXENDTC) then exendt = input(EXENDTC, e8601da.);
   __visc = put(VISITNUM, Z2.);
run;

%macro extrans(suff = , var = );
   proc transpose data = ex
                  out = ex_&suff (drop = _:)
                  prefix = EX
                  suffix = &suff;
      by USUBJID;
      var &var;
      id __visc;
   run;
%mend extrans;

%extrans(suff = ST, var = exstdt)
%extrans(suff = EN, var = exendt)
%extrans(suff = DS, var = EXDOSE)

data src_ex;
   merge ex_:;
   by USUBJID;

   format TRTEDT date9.;
   if not missing(EX12ST) then TRTEDT = EX12EN;
   else if not missing(EX04ST) then TRTEDT = EX04EN;
   else if not missing(EX03ST) then TRTEDT = EX03EN;
run;
/********************************************/
/*** END SECTION TO RETRIEVE ALL THE DATA ***/
/********************************************/
1          /**********************************************/
2          /*** BEGIN SECTION TO RETRIEVE ALL THE DATA ***/
3          /**********************************************/
4          /* demographic */
5          data src_dm (drop = __orig:);
6             set SDTM.DM (rename = (AGEU = __origageu RACE = __origrace ETHNIC = __origethnic));
7             where ARMCD ne 'Scrnfail';
8             length AGEU $5 RACE $32 ETHNIC $22 AGEGR1 $5;
9             AGEU = strip(__origageu);
10            RACE = strip(__origrace);
11            ETHNIC = strip(__origethnic);
12         
13            if input(SITEID, best.) in (702 706 707 711 714 715 717) then SITEGR1 = '900';
14            else SITEGR1 = SITEID;
15            TRT01P = ARM;
16            if ARM =: 'Placebo' then TRT01PN = 0;
17            else if find(ARM, 'Low', 'i') then TRT01PN = 54;
18            else if find(ARM, 'High', 'i') then TRT01PN = 81;
19         
20            if . < AGE < 65 then AGEGR1 = '<65';
21            else if 65 <= AGE <= 80 then AGEGR1 = '65-80';
22            else if AGE > 80 then AGEGR1 = '>80';
23            if not missing(AGEGR1) then AGEGR1N = whichc(first(AGEGR1), '<', '6', '>');
24         
25            if not missing(RACE) then RACEN = whichc(substr(RACE, 1, 2), 'WH', 'BL', 'xx', 'xx', 'xx', 'AM', 'AS');
26         
27            if not missing(ARMCD) then ITTFL = 'Y';
28            else ITTFL = 'N';
2                                                          The SAS System                                20:17 Monday, March 3, 2025

29         
30            format RFENDT date9.;
31            if not missing(RFENDTC) then RFENDT = input(RFENDTC, e8601da.);
32         run;

NOTE: There were 254 observations read from the data set SDTM.DM.
      WHERE ARMCD not = 'Scrnfail';
NOTE: The data set WORK.SRC_DM has 254 observations and 33 variables.
NOTE: DATA statement used (Total process time):
      real time           0.05 seconds
      cpu time            0.04 seconds
      

33         
34         /* disposition */
35         data src_ds (keep = USUBJID VISNUMEN DC: DISCONFL DSRAEFL);
36            set SDTM.DS;
37            by USUBJID;
38            retain VISNUMEN DCDECOD DCREASCD;
39            length DCDECOD $27 DCREASCD $18;
40            if first.USUBJID then call missing(VISNUMEN, DCDECOD, DCREASCD);
41         
42            if DSCAT = 'DISPOSITION EVENT' then do;
43               if VISITNUM ^= 13 then VISNUMEN = VISITNUM;
44               else VISNUMEN = 12;
45         
46               DCDECOD = DSDECOD;
47               if DSDECOD not in: ('STUDY' 'WITH' 'SCRE' 'LOST') then DCREASCD = tranwrd(propcase(DSDECOD), ' Of ', ' of ');
48               else if DSDECOD =: 'STUDY' then DCREASCD = 'Sponsor Decision';
49               else if DSDECOD =: 'WITH' then DCREASCD = 'Withdrew Consent';
50               else if DSDECOD =: 'SCRE' then DCREASCD = 'I/E Not Met';
51               else if DSDECOD =: 'LOST' then DCREASCD = 'Lost to Follow-up';
52         
53               if DSTERM = 'PROTOCOL ENTRY CRITERIA NOT MET' then DCREASCD = 'I/E Not Met';
54            end;
55            if last.USUBJID;
56            if DCDECOD ^= 'COMPLETED' then DISCONFL = 'Y';
57            if DCDECOD = 'ADVERSE EVENT' then DSRAEFL = 'Y';
58         run;

NOTE: There were 596 observations read from the data set SDTM.DS.
NOTE: The data set WORK.SRC_DS has 306 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.02 seconds
      cpu time            0.00 seconds
      

59         
60         /* baseline vitals */
61         proc sort data = SDTM.VS out = vs;
62            by USUBJID VSTESTCD;
63            where (VSTESTCD = 'HEIGHT' and VISITNUM = 1) or (VSTESTCD = 'WEIGHT' and VISITNUM = 3);
64         run;

NOTE: There were 507 observations read from the data set SDTM.VS.
      WHERE ((VSTESTCD='HEIGHT') and (VISITNUM=1)) or ((VSTESTCD='WEIGHT') and (VISITNUM=3));
NOTE: The data set WORK.VS has 507 observations and 24 variables.
NOTE: PROCEDURE SORT used (Total process time):
3                                                          The SAS System                                20:17 Monday, March 3, 2025

      real time           0.06 seconds
      cpu time            0.03 seconds
      

65         
66         proc transpose data = vs
67                        out = src_vs (drop = _:)
68                        suffix = BL;
69            by USUBJID;
70            id VSTESTCD;
71            var VSSTRESN;
72         run;

NOTE: There were 507 observations read from the data set WORK.VS.
NOTE: The data set WORK.SRC_VS has 254 observations and 3 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.03 seconds
      cpu time            0.03 seconds
      

73         
74         /* treatment start and subject visit */
75         data src_sv (keep = USUBJID VISIT1DT TRTSDT __vis:);
76            set SDTM.SV;
77            by USUBJID;
78            format VISIT1DT TRTSDT __vis4dt __vis8dt __vis10dt __vis12dt date9.;
79            retain VISIT1DT TRTSDT __vis4dt __vis8dt __vis10dt __vis12dt;
80            if first.USUBJID then call missing(VISIT1DT, TRTSDT, of __vis:);
81            if VISITNUM = 1 then VISIT1DT = input(SVSTDTC, e8601da.);
82            else if VISITNUM = 3 then TRTSDT = input(SVSTDTC, e8601da.);
83            else if VISITNUM = 4 then __vis4dt = input(SVSTDTC, e8601da.);
84            else if VISITNUM = 8 then __vis8dt = input(SVSTDTC, e8601da.);
85            else if VISITNUM = 10 then __vis10dt = input(SVSTDTC, e8601da.);
86            else if VISITNUM = 12 then __vis12dt = input(SVSTDTC, e8601da.);
87            if last.USUBJID;
88         run;

NOTE: There were 3559 observations read from the data set SDTM.SV.
NOTE: The data set WORK.SRC_SV has 306 observations and 7 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds
      

89         
90         /* primary diagnosis */
91         data src_mh;
92            set SDTM.MH;
93            where MHCAT = 'PRIMARY DIAGNOSIS';
94            format DISONSDT date9.;
95            if not missing(MHSTDTC) then DISONSDT = input(MHSTDTC, e8601da.);
96            keep USUBJID DISONSDT;
97         run;

NOTE: There were 254 observations read from the data set SDTM.MH.
      WHERE MHCAT='PRIMARY DIAGNOSIS';
NOTE: The data set WORK.SRC_MH has 254 observations and 2 variables.
NOTE: DATA statement used (Total process time):
4                                                          The SAS System                                20:17 Monday, March 3, 2025

      real time           0.01 seconds
      cpu time            0.01 seconds
      

98         
99         /* mini-mental state and ADAS-Cog and CIBIC post-baseline */
100        data src_qs;
101           set SDTM.QS;
102           by USUBJID;
103           retain MMSETOT __effalz __effcli;
104           if first.USUBJID then do;
105              MMSETOT = 0;
106              __effalz = 0;
107              __effcli = 0;
108           end;
109           if QSCAT =: 'MINI' then MMSETOT = sum(MMSETOT, input(QSORRES, best.));
110           if QSCAT =: 'ALZ' and VISITNUM > 3 then __effalz = 1;
111           if QSCAT =: 'CLI' and VISITNUM > 3 then __effcli = 1;
112           if last.USUBJID;
113           keep USUBJID MMSETOT __eff:;
114        run;

NOTE: There were 121749 observations read from the data set SDTM.QS.
NOTE: The data set WORK.SRC_QS has 254 observations and 4 variables.
NOTE: DATA statement used (Total process time):
      real time           0.05 seconds
      cpu time            0.04 seconds
      

115        
116        /* exposure */
117        data ex;
118           set SDTM.EX;
119           format exstdt exendt date9.;
120           if not missing(EXSTDTC) then exstdt = input(EXSTDTC, e8601da.);
121           if not missing(EXENDTC) then exendt = input(EXENDTC, e8601da.);
122           __visc = put(VISITNUM, Z2.);
123        run;

NOTE: There were 591 observations read from the data set SDTM.EX.
NOTE: The data set WORK.EX has 591 observations and 20 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.00 seconds
      

124        
125        %macro extrans(suff = , var = );
126           proc transpose data = ex
127                          out = ex_&suff (drop = _:)
128                          prefix = EX
129                          suffix = &suff;
130              by USUBJID;
131              var &var;
132              id __visc;
133           run;
134        %mend extrans;
135        
5                                                          The SAS System                                20:17 Monday, March 3, 2025

136        %extrans(suff = ST, var = exstdt)

NOTE: There were 591 observations read from the data set WORK.EX.
NOTE: The data set WORK.EX_ST has 254 observations and 4 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.04 seconds
      cpu time            0.03 seconds
      

137        %extrans(suff = EN, var = exendt)

NOTE: There were 591 observations read from the data set WORK.EX.
NOTE: The data set WORK.EX_EN has 254 observations and 4 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.02 seconds
      cpu time            0.01 seconds
      

138        %extrans(suff = DS, var = EXDOSE)

NOTE: There were 591 observations read from the data set WORK.EX.
NOTE: The data set WORK.EX_DS has 254 observations and 4 variables.
NOTE: PROCEDURE TRANSPOSE used (Total process time):
      real time           0.02 seconds
      cpu time            0.03 seconds
      

139        
140        data src_ex;
141           merge ex_:;
142           by USUBJID;
143        
144           format TRTEDT date9.;
145           if not missing(EX12ST) then TRTEDT = EX12EN;
146           else if not missing(EX04ST) then TRTEDT = EX04EN;
147           else if not missing(EX03ST) then TRTEDT = EX03EN;
148        run;

NOTE: There were 254 observations read from the data set WORK.EX_DS.
NOTE: There were 254 observations read from the data set WORK.EX_EN.
NOTE: There were 254 observations read from the data set WORK.EX_ST.
NOTE: The data set WORK.SRC_EX has 254 observations and 11 variables.
NOTE: DATA statement used (Total process time):
      real time           0.03 seconds
      cpu time            0.01 seconds
      

149        /********************************************/
150        /*** END SECTION TO RETRIEVE ALL THE DATA ***/
151        /********************************************/

SRC_DM: 254 observations (Demographics)

SRC_DS: 306 observations (Disposition Events)

VS: 507 observations (Vital Signs - Height at Visit 1 and Weight at Visit 3)

SRC_VS: 254 observations (Height and Weight on same record)

SRC_SV: 306 observations (Subject Visit Dates for Visits 3, 4, 8, 10, 12)

SRC_MH: 254 observations (Medical History - Primary Diagnosis Date)

SRC__QS: 254 observations (Questionnaires: Mini-Mental State, ADAS-Cog and CIBIC post-baseline)

EX: 591 observations (Study Drug Exposure)

EX_ST: 254 observations (Exposure Start Dates on one record per subject)
EX_EN: 254 observations (Exposure End Dates on one record per subject)
EX_DS: 254 observations (Exposure Dose Level on one record per subject)

SRC_EX: 254 observations (Exposure Start Dates, End Dates, Dose Levels Combined)
# -----------------------------------------------
# Load CDISC Pilot SDTM Data
# -----------------------------------------------

# -----------------------------------------------
# Define QS File Paths
# -----------------------------------------------
qs_files <- list(
  qsco = "../data/qsco.xpt",
  qsda = "../data/qsda.xpt",
  qsgi = "../data/qsgi.xpt",
  qshi = "../data/qshi.xpt",
  qsmm = "../data/qsmm.xpt",
  qsni = "../data/qsni.xpt"
)

# -----------------------------------------------
# Load All QS Files into a List
# -----------------------------------------------
qs_list <- lapply(qs_files, read_xpt)

# -----------------------------------------------
# Combine All QS Files into a Single Dataset
# -----------------------------------------------
qs_all <- bind_rows(qs_list)
write_xpt(qs_all, "../data/qs_all.xpt")

# Define paths to SDTM datasets (questionnaire variables removed)
sdtm_paths <- list(
  dm = "../data/dm.xpt",       # Demographics
  ae = "../data/ae.xpt",       # Adverse Events
  se = "../data/se.xpt",       # Subject Elements
  ex = "../data/ex.xpt",       # Exposure
  vs = "../data/vs.xpt",       # Vital Signs
  sc = "../data/sc.xpt",       # Subject Characteristics
  mh = "../data/mh.xpt",       # Medical History
  ds = "../data/ds.xpt",       # Disposition
  sv = "../data/sv.xpt",       # Subject Visits
  qs = "../data/qs_all.xpt"    # Combined Questionnaire Data
)

# Load datasets into a named list
sdtm_data <- lapply(sdtm_paths, haven::read_xpt)
names(sdtm_data) <- names(sdtm_paths)

str(sdtm_data) # Looks Good
List of 10
 $ dm: tibble [306 × 25] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:306] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:306] "DM" "DM" "DM" "DM" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:306] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ SUBJID  : chr [1:306] "1015" "1023" "1028" "1033" ...
  .. ..- attr(*, "label")= chr "Subject Identifier for the Study"
  ..$ RFSTDTC : chr [1:306] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  .. ..- attr(*, "label")= chr "Subject Reference Start Date/Time"
  ..$ RFENDTC : chr [1:306] "2014-07-02" "2012-09-02" "2014-01-14" "2014-04-14" ...
  .. ..- attr(*, "label")= chr "Subject Reference End Date/Time"
  ..$ RFXSTDTC: chr [1:306] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  .. ..- attr(*, "label")= chr "Date/Time of First Study Treatment"
  ..$ RFXENDTC: chr [1:306] "2014-07-02" "2012-09-01" "2014-01-14" "2014-03-31" ...
  .. ..- attr(*, "label")= chr "Date/Time of Last Study Treatment"
  ..$ RFICDTC : chr [1:306] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Date/Time of Informed Consent"
  ..$ RFPENDTC: chr [1:306] "2014-07-02T11:45" "2013-02-18" "2014-01-14T11:10" "2014-09-15" ...
  .. ..- attr(*, "label")= chr "Date/Time of End of Participation"
  ..$ DTHDTC  : chr [1:306] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Date/Time of Death"
  ..$ DTHFL   : chr [1:306] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Subject Death Flag"
  ..$ SITEID  : chr [1:306] "701" "701" "701" "701" ...
  .. ..- attr(*, "label")= chr "Study Site Identifier"
  ..$ AGE     : num [1:306] 63 64 71 74 77 85 59 68 81 84 ...
  .. ..- attr(*, "label")= chr "Age"
  ..$ AGEU    : chr [1:306] "YEARS" "YEARS" "YEARS" "YEARS" ...
  .. ..- attr(*, "label")= chr "Age Units"
  ..$ SEX     : chr [1:306] "F" "M" "M" "M" ...
  .. ..- attr(*, "label")= chr "Sex"
  ..$ RACE    : chr [1:306] "WHITE" "WHITE" "WHITE" "WHITE" ...
  .. ..- attr(*, "label")= chr "Race"
  ..$ ETHNIC  : chr [1:306] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
  .. ..- attr(*, "label")= chr "Ethnicity"
  ..$ ARMCD   : chr [1:306] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  .. ..- attr(*, "label")= chr "Planned Arm Code"
  ..$ ARM     : chr [1:306] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  .. ..- attr(*, "label")= chr "Description of Planned Arm"
  ..$ ACTARMCD: chr [1:306] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  .. ..- attr(*, "label")= chr "Actual Arm Code"
  ..$ ACTARM  : chr [1:306] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  .. ..- attr(*, "label")= chr "Description of Actual Arm"
  ..$ COUNTRY : chr [1:306] "USA" "USA" "USA" "USA" ...
  .. ..- attr(*, "label")= chr "Country"
  ..$ DMDTC   : chr [1:306] "2013-12-26" "2012-07-22" "2013-07-11" "2014-03-10" ...
  .. ..- attr(*, "label")= chr "Date/Time of Collection"
  ..$ DMDY    : num [1:306] -7 -14 -8 -8 -7 -21 NA -9 -13 -7 ...
  .. ..- attr(*, "label")= chr "Study Day of Collection"
 $ ae: tibble [961 × 37] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:961] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:961] "AE" "AE" "AE" "AE" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:961] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1023" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ AESEQ   : num [1:961] 1 2 3 3 2 4 1 2 1 2 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ AESPID  : chr [1:961] "E07" "E08" "E06" "E10" ...
  .. ..- attr(*, "label")= chr "Sponsor-Defined Identifier"
  ..$ AETERM  : chr [1:961] "APPLICATION SITE ERYTHEMA" "APPLICATION SITE PRURITUS" "DIARRHOEA" "ATRIOVENTRICULAR BLOCK SECOND DEGREE" ...
  .. ..- attr(*, "label")= chr "Reported Term for the Adverse Event"
  ..$ AELLT   : chr [1:961] "APPLICATION SITE REDNESS" "APPLICATION SITE ITCHING" "DIARRHEA" "AV BLOCK SECOND DEGREE" ...
  .. ..- attr(*, "label")= chr "Lowest Level Term"
  ..$ AELLTCD : num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "Lowest Level Term Code"
  ..$ AEDECOD : chr [1:961] "APPLICATION SITE ERYTHEMA" "APPLICATION SITE PRURITUS" "DIARRHOEA" "ATRIOVENTRICULAR BLOCK SECOND DEGREE" ...
  .. ..- attr(*, "label")= chr "Dictionary-Derived Term"
  ..$ AEPTCD  : num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "Preferred Term Code"
  ..$ AEHLT   : chr [1:961] "HLT_0617" "HLT_0317" "HLT_0148" "HLT_0415" ...
  .. ..- attr(*, "label")= chr "High Level Term"
  ..$ AEHLTCD : num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "High Level Term Code"
  ..$ AEHLGT  : chr [1:961] "HLGT_0152" "HLGT_0338" "HLGT_0588" "HLGT_0086" ...
  .. ..- attr(*, "label")= chr "High Level Group Term"
  ..$ AEHLGTCD: num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "High Level Group Term Code"
  ..$ AEBODSYS: chr [1:961] "GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS" "GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS" "GASTROINTESTINAL DISORDERS" "CARDIAC DISORDERS" ...
  .. ..- attr(*, "label")= chr "Body System or Organ Class"
  ..$ AEBDSYCD: num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "Body System or Organ Class Code"
  ..$ AESOC   : chr [1:961] "GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS" "GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS" "GASTROINTESTINAL DISORDERS" "CARDIAC DISORDERS" ...
  .. ..- attr(*, "label")= chr "Primary System Organ Class"
  ..$ AESOCCD : num [1:961] NA NA NA NA NA NA NA NA NA NA ...
  .. ..- attr(*, "label")= chr "Primary System Organ Class Code"
  ..$ AESEV   : chr [1:961] "MILD" "MILD" "MILD" "MILD" ...
  .. ..- attr(*, "label")= chr "Severity/Intensity"
  ..$ AESER   : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Serious Event"
  ..$ AEACN   : chr [1:961] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Action Taken with Study Treatment"
  ..$ AEREL   : chr [1:961] "PROBABLE" "PROBABLE" "REMOTE" "POSSIBLE" ...
  .. ..- attr(*, "label")= chr "Causality"
  ..$ AEOUT   : chr [1:961] "NOT RECOVERED/NOT RESOLVED" "NOT RECOVERED/NOT RESOLVED" "RECOVERED/RESOLVED" "NOT RECOVERED/NOT RESOLVED" ...
  .. ..- attr(*, "label")= chr "Outcome of Adverse Event"
  ..$ AESCAN  : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Involves Cancer"
  ..$ AESCONG : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Congenital Anomaly or Birth Defect"
  ..$ AESDISAB: chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Persist or Signif Disability/Incapacity"
  ..$ AESDTH  : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Results in Death"
  ..$ AESHOSP : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Requires or Prolongs Hospitalization"
  ..$ AESLIFE : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Is Life Threatening"
  ..$ AESOD   : chr [1:961] "N" "N" "N" "N" ...
  .. ..- attr(*, "label")= chr "Occurred with Overdose"
  ..$ EPOCH   : chr [1:961] "TREATMENT" "TREATMENT" "TREATMENT" "TREATMENT" ...
  .. ..- attr(*, "label")= chr "Epoch"
  ..$ AEDTC   : chr [1:961] "2014-01-16" "2014-01-16" "2014-01-16" "2012-08-27" ...
  .. ..- attr(*, "label")= chr "Date/Time of Collection"
  ..$ AESTDTC : chr [1:961] "2014-01-03" "2014-01-03" "2014-01-09" "2012-08-26" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Adverse Event"
  ..$ AEENDTC : chr [1:961] "" "" "2014-01-11" "" ...
  .. ..- attr(*, "label")= chr "End Date/Time of Adverse Event"
  ..$ AEDY    : num [1:961] 15 15 15 23 23 29 14 27 87 141 ...
  .. ..- attr(*, "label")= chr "Study Day of Visit/Collection/Exam"
  ..$ AESTDY  : num [1:961] 2 2 8 22 3 3 3 21 58 125 ...
  .. ..- attr(*, "label")= chr "Study Day of Start of Adverse Event"
  ..$ AEENDY  : num [1:961] NA NA 10 NA NA 26 NA NA NA NA ...
  .. ..- attr(*, "label")= chr "Study Day of End of Adverse Event"
 $ se: tibble [752 × 12] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID: chr [1:752] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN : chr [1:752] "SE" "SE" "SE" "SE" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID: chr [1:752] "01-701-1015" "01-701-1015" "01-701-1023" "01-701-1023" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ SESEQ  : num [1:752] 1 4 1 4 6 1 3 4 5 1 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ ETCD   : chr [1:752] "SCRN" "PBO" "SCRN" "PBO" ...
  .. ..- attr(*, "label")= chr "Element Code"
  ..$ ELEMENT: chr [1:752] "Screen" "Placebo" "Screen" "Placebo" ...
  .. ..- attr(*, "label")= chr "Description of Element"
  ..$ SEUPDES: chr [1:752] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Description of Unplanned Element"
  ..$ EPOCH  : chr [1:752] "SCREENING" "TREATMENT" "SCREENING" "TREATMENT" ...
  .. ..- attr(*, "label")= chr "Epoch"
  ..$ SESTDTC: chr [1:752] "2013-12-26" "2014-01-02" "2012-07-22" "2012-08-05" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Element"
  ..$ SEENDTC: chr [1:752] "2014-01-02" "2014-07-02" "2012-08-05" "2013-02-18" ...
  .. ..- attr(*, "label")= chr "End Date/Time of Element"
  ..$ SESTDY : num [1:752] -7 1 -14 1 198 -8 1 14 172 -8 ...
  .. ..- attr(*, "label")= chr "Study Day of Start of Observation"
  ..$ SEENDY : num [1:752] 1 182 1 198 198 1 14 172 180 1 ...
  .. ..- attr(*, "label")= chr "Study Day of End of Observation"
 $ ex: tibble [591 × 18] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:591] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  .. ..- attr(*, "format.sas")= chr "$12"
  ..$ DOMAIN  : chr [1:591] "EX" "EX" "EX" "EX" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  .. ..- attr(*, "format.sas")= chr "$2"
  ..$ USUBJID : chr [1:591] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1023" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  .. ..- attr(*, "format.sas")= chr "$11"
  ..$ EXSEQ   : num [1:591] 1 2 3 1 2 1 2 3 1 1 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ EXTRT   : chr [1:591] "PLACEBO" "PLACEBO" "PLACEBO" "PLACEBO" ...
  .. ..- attr(*, "label")= chr "Name of Treatment"
  .. ..- attr(*, "format.sas")= chr "$10"
  ..$ EXDOSE  : num [1:591] 0 0 0 0 0 54 81 54 54 54 ...
  .. ..- attr(*, "label")= chr "Dose"
  ..$ EXDOSU  : chr [1:591] "mg" "mg" "mg" "mg" ...
  .. ..- attr(*, "label")= chr "Dose Units"
  .. ..- attr(*, "format.sas")= chr "$2"
  ..$ EXDOSFRM: chr [1:591] "PATCH" "PATCH" "PATCH" "PATCH" ...
  .. ..- attr(*, "label")= chr "Dose Form"
  .. ..- attr(*, "format.sas")= chr "$5"
  ..$ EXDOSFRQ: chr [1:591] "QD" "QD" "QD" "QD" ...
  .. ..- attr(*, "label")= chr "Dosing Frequency per Interval"
  .. ..- attr(*, "format.sas")= chr "$2"
  ..$ EXROUTE : chr [1:591] "TRANSDERMAL" "TRANSDERMAL" "TRANSDERMAL" "TRANSDERMAL" ...
  .. ..- attr(*, "label")= chr "Route of Administration"
  .. ..- attr(*, "format.sas")= chr "$11"
  ..$ VISITNUM: num [1:591] 3 4 12 3 4 3 4 12 3 3 ...
  .. ..- attr(*, "label")= chr "Visit Number"
  ..$ VISIT   : chr [1:591] "BASELINE" "WEEK 2" "WEEK 24" "BASELINE" ...
  .. ..- attr(*, "label")= chr "Visit Name"
  .. ..- attr(*, "format.sas")= chr "$8"
  ..$ VISITDY : num [1:591] 1 14 168 1 14 1 14 168 1 1 ...
  .. ..- attr(*, "label")= chr "Planned Study Day of Visit"
  ..$ EPOCH   : chr [1:591] "TREATMENT" "TREATMENT" "TREATMENT" "TREATMENT" ...
  .. ..- attr(*, "label")= chr "Epoch"
  .. ..- attr(*, "format.sas")= chr "$9"
  ..$ EXSTDTC : chr [1:591] "2014-01-02" "2014-01-17" "2014-06-19" "2012-08-05" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Treatment"
  .. ..- attr(*, "format.sas")= chr "$10"
  ..$ EXENDTC : chr [1:591] "2014-01-16" "2014-06-18" "2014-07-02" "2012-08-27" ...
  .. ..- attr(*, "label")= chr "End Date/Time of Treatment"
  .. ..- attr(*, "format.sas")= chr "$10"
  ..$ EXSTDY  : num [1:591] 1 16 169 1 24 1 15 173 1 1 ...
  .. ..- attr(*, "label")= chr "Study Day of Start of Treatment"
  ..$ EXENDY  : num [1:591] 15 168 182 23 28 14 172 180 14 15 ...
  .. ..- attr(*, "label")= chr "Study Day of End of Treatment"
 $ vs: tibble [29,643 × 25] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:29643] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:29643] "VS" "VS" "VS" "VS" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:29643] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1015" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ VSSEQ   : num [1:29643] 1 2 3 4 5 6 7 8 9 10 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ VSTESTCD: chr [1:29643] "DIABP" "DIABP" "DIABP" "DIABP" ...
  .. ..- attr(*, "label")= chr "Vital Signs Test Short Name"
  ..$ VSTEST  : chr [1:29643] "Diastolic Blood Pressure" "Diastolic Blood Pressure" "Diastolic Blood Pressure" "Diastolic Blood Pressure" ...
  .. ..- attr(*, "label")= chr "Vital Signs Test Name"
  ..$ VSPOS   : chr [1:29643] "SUPINE" "STANDING" "STANDING" "SUPINE" ...
  .. ..- attr(*, "label")= chr "Vital Signs Position of Subject"
  ..$ VSORRES : chr [1:29643] "64" "83" "57" "68" ...
  .. ..- attr(*, "label")= chr "Result or Finding in Original Units"
  ..$ VSORRESU: chr [1:29643] "mmHg" "mmHg" "mmHg" "mmHg" ...
  .. ..- attr(*, "label")= chr "Original Units"
  ..$ VSSTRESC: chr [1:29643] "64" "83" "57" "68" ...
  .. ..- attr(*, "label")= chr "Character Result/Finding in Std Format"
  ..$ VSSTRESN: num [1:29643] 64 83 57 68 59 71 56 51 61 67 ...
  .. ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
  ..$ VSSTRESU: chr [1:29643] "mmHg" "mmHg" "mmHg" "mmHg" ...
  .. ..- attr(*, "label")= chr "Standard Units"
  ..$ VSSTAT  : chr [1:29643] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Completion Status"
  ..$ VSLOC   : chr [1:29643] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Location of Vital Signs Measurement"
  ..$ VSBLFL  : chr [1:29643] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Baseline Flag"
  ..$ VISITNUM: num [1:29643] 1 1 1 2 2 2 3 3 3 3.5 ...
  .. ..- attr(*, "label")= chr "Visit Number"
  ..$ VISIT   : chr [1:29643] "SCREENING 1" "SCREENING 1" "SCREENING 1" "SCREENING 2" ...
  .. ..- attr(*, "label")= chr "Visit Name"
  ..$ VISITDY : num [1:29643] -7 -7 -7 -1 -1 -1 1 1 1 13 ...
  .. ..- attr(*, "label")= chr "Planned Study Day of Visit"
  ..$ EPOCH   : chr [1:29643] "SCREENING" "SCREENING" "SCREENING" "SCREENING" ...
  .. ..- attr(*, "label")= chr "Epoch"
  ..$ VSDTC   : chr [1:29643] "2013-12-26" "2013-12-26" "2013-12-26" "2013-12-31" ...
  .. ..- attr(*, "label")= chr "Date/Time of Measurements"
  ..$ VSDY    : num [1:29643] -7 -7 -7 -2 -2 -2 1 1 1 13 ...
  .. ..- attr(*, "label")= chr "Study Day of Vital Signs"
  ..$ VSTPT   : chr [1:29643] "AFTER LYING DOWN FOR 5 MINUTES" "AFTER STANDING FOR 1 MINUTE" "AFTER STANDING FOR 3 MINUTES" "AFTER LYING DOWN FOR 5 MINUTES" ...
  .. ..- attr(*, "label")= chr "Planned Time Point Name"
  ..$ VSTPTNUM: num [1:29643] 815 816 817 815 816 817 815 816 817 815 ...
  .. ..- attr(*, "label")= chr "Planned Time Point Number"
  ..$ VSELTM  : chr [1:29643] "PT5M" "PT1M" "PT3M" "PT5M" ...
  .. ..- attr(*, "label")= chr "Planned Elapsed Time from Time Point Ref"
  ..$ VSTPTREF: chr [1:29643] "PATIENT SUPINE" "PATIENT STANDING" "PATIENT STANDING" "PATIENT SUPINE" ...
  .. ..- attr(*, "label")= chr "Time Point Reference"
 $ sc: tibble [254 × 14] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:254] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:254] "SC" "SC" "SC" "SC" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ SCSEQ   : num [1:254] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ SCTESTCD: chr [1:254] "EDULEVEL" "EDULEVEL" "EDULEVEL" "EDULEVEL" ...
  .. ..- attr(*, "label")= chr "Subject Characteristic Short Name"
  ..$ SCTEST  : chr [1:254] "Level of Education Attained" "Level of Education Attained" "Level of Education Attained" "Level of Education Attained" ...
  .. ..- attr(*, "label")= chr "Subject Characteristic"
  ..$ SCCAT   : chr [1:254] "EDUCATION" "EDUCATION" "EDUCATION" "EDUCATION" ...
  .. ..- attr(*, "label")= chr "Category for Subject Characteristic"
  ..$ SCORRES : chr [1:254] "16" "14" "16" "12" ...
  .. ..- attr(*, "label")= chr "Result or Finding in Original Units"
  ..$ SCORRESU: chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
  .. ..- attr(*, "label")= chr "Original Units"
  ..$ SCSTRESC: chr [1:254] "16" "14" "16" "12" ...
  .. ..- attr(*, "label")= chr "Character Result/Finding in Std Format"
  ..$ SCSTRESN: num [1:254] 16 14 16 12 9 8 18 22 12 14 ...
  .. ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
  ..$ SCSTRESU: chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
  .. ..- attr(*, "label")= chr "Standard Units"
  ..$ SCDTC   : chr [1:254] "2013-12-26" "2012-07-22" "2013-07-11" "2014-03-10" ...
  .. ..- attr(*, "label")= chr "Date/Time of Collection"
  ..$ SCDY    : num [1:254] -7 -14 -8 -8 -7 -21 -9 -13 -7 -13 ...
  .. ..- attr(*, "label")= chr "Study Day of Examination"
 $ mh: tibble [1,817 × 19] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:1817] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:1817] "MH" "MH" "MH" "MH" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:1817] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1015" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ MHSEQ   : num [1:1817] 9 10 4 2 5 8 1 11 6 3 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ MHSPID  : chr [1:1817] "" "" "E02" "E03" ...
  .. ..- attr(*, "label")= chr "Sponsor-Defined Identifier"
  ..$ MHTERM  : chr [1:1817] "ALZHEIMER'S DISEASE" "VERBATIM_0539" "VERBATIM_0841" "VERBATIM_0301" ...
  .. ..- attr(*, "label")= chr "Reported Term for the Medical History"
  ..$ MHLLT   : chr [1:1817] "" "GALLBLADDER STONES" "HEARTBURN" "HEADACHE" ...
  .. ..- attr(*, "label")= chr "Lowest Level Term"
  ..$ MHDECOD : chr [1:1817] "" "CHOLELITHIASIS" "DYSPEPSIA" "HEADACHE" ...
  .. ..- attr(*, "label")= chr "Dictionary-Derived Term"
  ..$ MHHLT   : chr [1:1817] "" "HLT_0084" "HLT_0244" "HLT_0064" ...
  .. ..- attr(*, "label")= chr "High Level Term"
  ..$ MHHLGT  : chr [1:1817] "" "HLGT_0177" "HLGT_0716" "HLGT_0344" ...
  .. ..- attr(*, "label")= chr "High Level Group Term"
  ..$ MHCAT   : chr [1:1817] "PRIMARY DIAGNOSIS" "HISTORICAL DIAGNOSIS" "SIGNIFICANT PRE-EXISTING CONDITION" "SIGNIFICANT PRE-EXISTING CONDITION" ...
  .. ..- attr(*, "label")= chr "Category for Medical History"
  ..$ MHBODSYS: chr [1:1817] "" "HEPATOBILIARY DISORDERS" "GASTROINTESTINAL DISORDERS" "NERVOUS SYSTEM DISORDERS" ...
  .. ..- attr(*, "label")= chr "Body System or Organ Class"
  ..$ MHSEV   : chr [1:1817] "" "" "MILD" "MILD" ...
  .. ..- attr(*, "label")= chr "Severity/Intensity"
  ..$ VISITNUM: num [1:1817] 1 1 1 1 1 1 1 1 1 1 ...
  .. ..- attr(*, "label")= chr "Visit Number"
  ..$ VISIT   : chr [1:1817] "SCREENING 1" "SCREENING 1" "SCREENING 1" "SCREENING 1" ...
  .. ..- attr(*, "label")= chr "Visit Name"
  ..$ VISITDY : num [1:1817] -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 ...
  .. ..- attr(*, "label")= chr "Planned Study Day of Visit"
  ..$ MHDTC   : chr [1:1817] "2013-12-26" "2013-12-26" "2013-12-26" "2013-12-26" ...
  .. ..- attr(*, "label")= chr "Date/Time of History Collection"
  ..$ MHSTDTC : chr [1:1817] "2010-04-30" "2012" "" "" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Medical History Event"
  ..$ MHDY    : num [1:1817] -7 -7 -7 -7 -7 -7 -7 -7 -7 -7 ...
  .. ..- attr(*, "label")= chr "Study Day of History Collection"
 $ ds: tibble [596 × 15] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:596] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  .. ..- attr(*, "format.sas")= chr "$12"
  ..$ DOMAIN  : chr [1:596] "DS" "DS" "DS" "DS" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  .. ..- attr(*, "format.sas")= chr "$2"
  ..$ USUBJID : chr [1:596] "01-701-1015" "01-701-1015" "01-701-1023" "01-701-1023" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  .. ..- attr(*, "format.sas")= chr "$11"
  ..$ DSSEQ   : num [1:596] 1 2 1 2 3 1 2 1 2 3 ...
  .. ..- attr(*, "label")= chr "Sequence Number"
  ..$ DSSPID  : chr [1:596] "" "" "24" "" ...
  .. ..- attr(*, "label")= chr "Sponsor-Defined Identifier"
  .. ..- attr(*, "format.sas")= chr "$2"
  ..$ DSTERM  : chr [1:596] "PROTOCOL COMPLETED" "FINAL LAB VISIT" "ADVERSE EVENT" "FINAL LAB VISIT" ...
  .. ..- attr(*, "label")= chr "Reported Term for the Disposition Event"
  .. ..- attr(*, "format.sas")= chr "$63"
  ..$ DSDECOD : chr [1:596] "COMPLETED" "FINAL LAB VISIT" "ADVERSE EVENT" "FINAL LAB VISIT" ...
  .. ..- attr(*, "label")= chr "Standardized Disposition Term"
  .. ..- attr(*, "format.sas")= chr "$27"
  ..$ DSCAT   : chr [1:596] "DISPOSITION EVENT" "OTHER EVENT" "DISPOSITION EVENT" "OTHER EVENT" ...
  .. ..- attr(*, "label")= chr "Category for Disposition Event"
  .. ..- attr(*, "format.sas")= chr "$17"
  ..$ VISITNUM: num [1:596] 13 13 5 5 201 13 13 5 5 201 ...
  .. ..- attr(*, "label")= chr "Visit Number"
  ..$ VISIT   : chr [1:596] "WEEK 26" "WEEK 26" "WEEK 4" "WEEK 4" ...
  .. ..- attr(*, "label")= chr "Visit Name"
  .. ..- attr(*, "format.sas")= chr "$17"
  ..$ EPOCH   : chr [1:596] "FOLLOW-UP" "FOLLOW-UP" "TREATMENT" "TREATMENT" ...
  .. ..- attr(*, "label")= chr "Epoch"
  .. ..- attr(*, "format.sas")= chr "$9"
  ..$ DSDTC   : chr [1:596] "2014-07-02" "2014-07-02T11:45" "2012-09-02" "2012-09-02T10:15" ...
  .. ..- attr(*, "label")= chr "Date/Time of Collection"
  .. ..- attr(*, "format.sas")= chr "$16"
  ..$ DSSTDTC : chr [1:596] "2014-07-02" "2014-07-02" "2012-09-02" "2012-09-02" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Disposition Event"
  .. ..- attr(*, "format.sas")= chr "$10"
  ..$ DSDY    : num [1:596] 182 182 29 29 198 180 180 28 28 182 ...
  .. ..- attr(*, "label")= chr "Study Day of Visit/Collection/Exam"
  ..$ DSSTDY  : num [1:596] 182 182 29 29 198 180 180 28 28 182 ...
  .. ..- attr(*, "label")= chr "Study Day of Start of Disposition Event"
 $ sv: tibble [3,559 × 12] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:3559] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  .. ..- attr(*, "label")= chr "Study Identifier"
  ..$ DOMAIN  : chr [1:3559] "SV" "SV" "SV" "SV" ...
  .. ..- attr(*, "label")= chr "Domain Abbreviation"
  ..$ USUBJID : chr [1:3559] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1015" ...
  .. ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..$ VISITNUM: num [1:3559] 1 2 3 3.5 4 5 6 7 8 9 ...
  .. ..- attr(*, "label")= chr "Visit Number"
  ..$ VISIT   : chr [1:3559] "SCREENING 1" "SCREENING 2" "BASELINE" "AMBUL ECG PLACEMENT" ...
  .. ..- attr(*, "label")= chr "Visit Name"
  ..$ VISITDY : num [1:3559] -7 -1 1 13 14 28 30 42 56 84 ...
  .. ..- attr(*, "label")= chr "Planned Study Day of Visit"
  ..$ EPOCH   : chr [1:3559] "SCREENING" "SCREENING" "TREATMENT" "TREATMENT" ...
  .. ..- attr(*, "label")= chr "Epoch"
  ..$ SVSTDTC : chr [1:3559] "2013-12-26" "2013-12-31" "2014-01-02" "2014-01-14" ...
  .. ..- attr(*, "label")= chr "Start Date/Time of Visit"
  ..$ SVENDTC : chr [1:3559] "2013-12-26" "2013-12-31" "2014-01-02" "2014-01-14" ...
  .. ..- attr(*, "label")= chr "End Date/Time of Visit"
  ..$ SVSTDY  : num [1:3559] -7 -2 1 13 15 29 31 42 63 84 ...
  .. ..- attr(*, "label")= chr "Study Day of Start of Visit"
  ..$ SVENDY  : num [1:3559] -7 -2 1 13 15 29 31 42 63 84 ...
  .. ..- attr(*, "label")= chr "Study Day of End of Visit"
  ..$ SVUPDES : chr [1:3559] "" "" "" "" ...
  .. ..- attr(*, "label")= chr "Description of Unplanned Visit"
 $ qs: tibble [121,749 × 23] (S3: tbl_df/tbl/data.frame)
  ..$ STUDYID : chr [1:121749] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  ..$ DOMAIN  : chr [1:121749] "QS" "QS" "QS" "QS" ...
  ..$ USUBJID : chr [1:121749] "01-701-1015" "01-701-1015" "01-701-1015" "01-701-1015" ...
  ..$ QSSEQ   : num [1:121749] 5001 5016 5031 5046 5002 ...
  ..$ QSTESTCD: chr [1:121749] "ACITM01" "ACITM01" "ACITM01" "ACITM01" ...
  ..$ QSTEST  : chr [1:121749] "WORD RECALL TASK" "WORD RECALL TASK" "WORD RECALL TASK" "WORD RECALL TASK" ...
  ..$ QSCAT   : chr [1:121749] "ADAS-COG" "ADAS-COG" "ADAS-COG" "ADAS-COG" ...
  ..$ QSSCAT  : chr [1:121749] "" "" "" "" ...
  ..$ QSORRES : chr [1:121749] "3" "2" "4" "3" ...
  ..$ QSORRESU: chr [1:121749] "" "" "" "" ...
  ..$ QSSTRESC: chr [1:121749] "3" "2" "4" "3" ...
  ..$ QSSTRESN: num [1:121749] 3 2 4 3 1 0 0 0 3 3 ...
  ..$ QSSTRESU: chr [1:121749] "" "" "" "" ...
  ..$ QSSTAT  : chr [1:121749] "" "" "" "" ...
  ..$ QSREASND: chr [1:121749] "" "" "" "" ...
  ..$ QSBLFL  : chr [1:121749] "Y" "" "" "" ...
  ..$ QSDRVFL : chr [1:121749] "" "" "" "" ...
  ..$ VISITNUM: num [1:121749] 3 8 10 12 3 8 10 12 3 8 ...
  ..$ VISIT   : chr [1:121749] "BASELINE" "WEEK 8" "WEEK 16" "WEEK 24" ...
  ..$ VISITDY : num [1:121749] 1 56 112 168 1 56 112 168 1 56 ...
  ..$ EPOCH   : chr [1:121749] "TREATMENT" "TREATMENT" "TREATMENT" "TREATMENT" ...
  ..$ QSDTC   : chr [1:121749] "2014-01-02" "2014-03-05" "2014-05-07" "2014-06-18" ...
  ..$ QSDY    : num [1:121749] 1 63 126 168 1 63 126 168 1 63 ...
# -----------------------------------------------
# Section 1: Process Demographic Data (src_dm)
# -----------------------------------------------
# Replicates SAS logic: cleans variables, recodes SITEID, treatment arms,
# categorizes AGE and assigns race codes, sets ITT flag, and converts RFENDTC.
src_dm <- sdtm_data$dm %>%
  rename(`__origageu` = AGEU,
         `__origrace` = RACE,
         `__origethnic` = ETHNIC) %>%
  filter(ARMCD != "Scrnfail") %>%
  mutate(
    AGEU   = str_trim(`__origageu`),
    RACE   = str_trim(`__origrace`),
    ETHNIC = str_trim(`__origethnic`),
    # Recode SITEID: if numeric SITEID is in the given set, assign "900"
    SITEGR1 = if_else(as.numeric(SITEID) %in% c(702, 706, 707, 711, 714, 715, 717),
                      "900", SITEID),
    TRT01P = ARM,
    # Derive numeric treatment code based on ARM content
    TRT01PN = case_when(
      str_starts(ARM, "Placebo") ~ 0,
      str_detect(ARM, regex("Low", ignore_case = TRUE)) ~ 54,
      str_detect(ARM, regex("High", ignore_case = TRUE)) ~ 81,
      TRUE ~ NA_integer_
    ),
    # Categorize AGE into groups and assign numeric codes
    AGEGR1 = case_when(
      AGE > 0 & AGE < 65 ~ "<65",
      AGE >= 65 & AGE <= 80 ~ "65-80",
      AGE > 80 ~ ">80",
      TRUE ~ NA_character_
    ),
    AGEGR1N = case_when(
      AGEGR1 == "<65" ~ 1,
      AGEGR1 == "65-80" ~ 2,
      AGEGR1 == ">80" ~ 3,
      TRUE ~ NA_integer_
    ),
    # Assign race code based on first two letters of RACE
    RACEN = case_when(
      !is.na(RACE) & str_sub(RACE, 1, 2) == "WH" ~ 1,
      !is.na(RACE) & str_sub(RACE, 1, 2) == "BL" ~ 2,
      !is.na(RACE) & str_sub(RACE, 1, 2) %in% c("AM", "AS") ~ 3,
      TRUE ~ NA_integer_
    ),
    ITTFL = if_else(!is.na(ARMCD), "Y", "N"),
    # Convert RFENDTC to a Date (assumes ISO8601 format)
    RFENDT = if_else(!is.na(RFENDTC), ymd(RFENDTC), as.Date(NA))
  )

# -----------------------------------------------
# Section 2: Process Disposition Data (src_ds)
# -----------------------------------------------
# For each subject, if DSCAT equals "DISPOSITION EVENT", this section:
#   - Sets a visit number (VISNUMEN) with special handling if VISITNUM is 13
#   - Copies DSDECOD to DCDECOD and derives DCREASCD based on DSDECOD/DSTERM.
#   - Sets flags DISCONFL and DSRAEFL based on DCDECOD.
src_ds <- sdtm_data$ds %>%
  group_by(USUBJID) %>%
  mutate(
    VISNUMEN = if_else(DSCAT == "DISPOSITION EVENT",
                       if_else(VISITNUM != 13, VISITNUM, 12),
                       NA_integer_),
    DCDECOD = if_else(DSCAT == "DISPOSITION EVENT", DSDECOD, NA_character_),
    DCREASCD = case_when(
      DSCAT == "DISPOSITION EVENT" &
        !str_detect(DSDECOD, regex("^(STUDY|WITH|SCRE|LOST)", ignore_case = TRUE)) ~ 
          str_replace_all(str_to_title(DSDECOD), " Of ", " of "),
      DSCAT == "DISPOSITION EVENT" & str_starts(DSDECOD, regex("STUDY", ignore_case = TRUE)) ~ "Sponsor Decision",
      DSCAT == "DISPOSITION EVENT" & str_starts(DSDECOD, regex("WITH", ignore_case = TRUE)) ~ "Withdrew Consent",
      DSCAT == "DISPOSITION EVENT" & str_starts(DSDECOD, regex("SCRE", ignore_case = TRUE)) ~ "I/E Not Met",
      DSCAT == "DISPOSITION EVENT" & str_starts(DSDECOD, regex("LOST", ignore_case = TRUE)) ~ "Lost to Follow-up",
      TRUE ~ NA_character_
    ),
    DCREASCD = if_else(DSCAT == "DISPOSITION EVENT" & DSTERM == "PROTOCOL ENTRY CRITERIA NOT MET",
                        "I/E Not Met", DCREASCD)
  ) %>%
  filter(row_number() == n()) %>%  # Keep only the last record per subject
  ungroup() %>%
  mutate(
    DISCONFL = if_else(DCDECOD != "COMPLETED", "Y", NA_character_),
    DSRAEFL  = if_else(DCDECOD == "ADVERSE EVENT", "Y", NA_character_)
  ) %>%
  select(USUBJID, VISNUMEN, starts_with("DC"), DISCONFL, DSRAEFL)

# -----------------------------------------------
# Section 3: Process Baseline Vitals Data (src_vs)
# -----------------------------------------------
# Filters for HEIGHT at visit 1 and WEIGHT at visit 3, then pivots to wide format.
src_vs <- sdtm_data$vs %>%
  filter((VSTESTCD == "HEIGHT" & VISITNUM == 1) |
         (VSTESTCD == "WEIGHT" & VISITNUM == 3)) %>%
  select(USUBJID, VSTESTCD, VSSTRESN) %>%
  pivot_wider(names_from = VSTESTCD, values_from = VSSTRESN) %>%
  rename(HEIGHTBL = HEIGHT,
         WEIGHTBL = WEIGHT)

# -----------------------------------------------
# Section 4: Process Treatment Start and Subject Visit Data (src_sv)
# -----------------------------------------------
# Extracts key dates from the SV dataset. For each subject, it creates:
#   - VISIT1DT from visit 1,
#   - TRTSDT from visit 3,
#   - Additional visit date variables for visits 4, 8, 10, and 12.
src_sv <- sdtm_data$sv %>%
  arrange(USUBJID, VISITNUM) %>%
  group_by(USUBJID) %>%
  mutate(
    VISIT1DT = if_else(VISITNUM == 1, ymd(SVSTDTC), as.Date(NA)),
    TRTSDT   = if_else(VISITNUM == 3, ymd(SVSTDTC), as.Date(NA)),
    `__vis4dt` = if_else(VISITNUM == 4, ymd(SVSTDTC), as.Date(NA)),
    `__vis8dt` = if_else(VISITNUM == 8, ymd(SVSTDTC), as.Date(NA)),
    `__vis10dt` = if_else(VISITNUM == 10, ymd(SVSTDTC), as.Date(NA)),
    `__vis12dt` = if_else(VISITNUM == 12, ymd(SVSTDTC), as.Date(NA))
  ) %>%
  summarise(
    VISIT1DT = last(na.omit(VISIT1DT)),
    TRTSDT   = last(na.omit(TRTSDT)),
    `__vis4dt` = last(na.omit(`__vis4dt`)),
    `__vis8dt` = last(na.omit(`__vis8dt`)),
    `__vis10dt` = last(na.omit(`__vis10dt`)),
    `__vis12dt` = last(na.omit(`__vis12dt`))
  ) %>%
  ungroup()

# -----------------------------------------------
# Section 5: Process Primary Diagnosis Data (src_mh)
# -----------------------------------------------
# Filters the MH domain for records with MHCAT "PRIMARY DIAGNOSIS" and converts dates.
src_mh <- sdtm_data$mh %>%
  filter(MHCAT == "PRIMARY DIAGNOSIS") %>%
  mutate(
    DISONSDT = if_else(!is.na(MHSTDTC), ymd(MHSTDTC), as.Date(NA))
  ) %>%
  select(USUBJID, DISONSDT)

# -----------------------------------------------
# Section 6: Process Questionnaire Data (src_qs)
# -----------------------------------------------
# This section aggregates questionnaire scores and flags per subject.
# It calculates:
#   - MMSETOT: the sum of QSORRES (converted to numeric) for records where QSCAT starts with "MINI"
#   - __effalz: a flag (1/0) if any record with QSCAT starting with "ALZ" and VISITNUM > 3 exists
#   - __effcli: similarly, a flag for "CLI" and VISITNUM > 3.
src_qs <- sdtm_data$qs %>%
  group_by(USUBJID) %>%
  summarise(
    MMSETOT = sum(
      if_else(
        str_starts(QSCAT, "MINI"),
        # Suppress warnings when coercing non-numeric values to numeric
        suppressWarnings(as.numeric(QSORRES)),
        0
      ),
      na.rm = TRUE
    ),
    `__effalz` = if_else(any(str_starts(QSCAT, "ALZ") & VISITNUM > 3), 1, 0),
    `__effcli` = if_else(any(str_starts(QSCAT, "CLI") & VISITNUM > 3), 1, 0)
  ) %>%
  ungroup()

# -----------------------------------------------
# Section 7: Process Exposure Data (src_ex)
# -----------------------------------------------
# Converts EX domain dates, formats VISITNUM as a two-digit string,
# pivots the data for exposure start, end, and dose, and then derives TRTEDT.
ex <- sdtm_data$ex %>%
  mutate(
    exstdt = ymd(EXSTDTC),
    exendt = ymd(EXENDTC),
    `__visc` = sprintf("%02d", VISITNUM)
  )

# Helper function to pivot exposure variables by USUBJID.
# It uses names_glue to create column names of the form "EX<__visc><suff>"
ex_transpose <- function(data, var, suff) {
  # Construct the names_glue template using the provided suffix.
  # For example, if suff = "ST", columns will be "EX01ST", "EX02ST", etc.
  name_template <- paste0("EX{`__visc`}", suff)
  data %>%
    select(USUBJID, `__visc`, !!sym(var)) %>%
    pivot_wider(
      names_from = `__visc`,
      values_from = !!sym(var),
      names_glue = name_template
    )
}

# Transpose exposure start dates, end dates, and dose.
ex_st <- ex_transpose(ex, var = "exstdt", suff = "ST")
ex_en <- ex_transpose(ex, var = "exendt",  suff = "EN")
ex_ds <- ex_transpose(ex, var = "EXDOSE",  suff = "DS")

# Merge the transposed exposure datasets by USUBJID and derive treatment end date.
src_ex <- ex_st %>%
  left_join(ex_en, by = "USUBJID") %>%
  left_join(ex_ds, by = "USUBJID") %>%
  mutate(
    TRTEDT = case_when(
      !is.na(`EX12ST`) ~ `EX12EN`,
      !is.na(`EX04ST`) ~ `EX04EN`,
      !is.na(`EX03ST`) ~ `EX03EN`,
      TRUE ~ as.Date(NA)
    )
  )

# -----------------------------------------------
# Final Output Examination
# -----------------------------------------------
# Print the structure of each processed domain for review

cat("Structure of Demographics (src_dm):\n")
Structure of Demographics (src_dm):
str(src_dm)
tibble [254 × 36] (S3: tbl_df/tbl/data.frame)
 $ STUDYID     : chr [1:254] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  ..- attr(*, "label")= chr "Study Identifier"
 $ DOMAIN      : chr [1:254] "DM" "DM" "DM" "DM" ...
  ..- attr(*, "label")= chr "Domain Abbreviation"
 $ USUBJID     : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ SUBJID      : chr [1:254] "1015" "1023" "1028" "1033" ...
  ..- attr(*, "label")= chr "Subject Identifier for the Study"
 $ RFSTDTC     : chr [1:254] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  ..- attr(*, "label")= chr "Subject Reference Start Date/Time"
 $ RFENDTC     : chr [1:254] "2014-07-02" "2012-09-02" "2014-01-14" "2014-04-14" ...
  ..- attr(*, "label")= chr "Subject Reference End Date/Time"
 $ RFXSTDTC    : chr [1:254] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  ..- attr(*, "label")= chr "Date/Time of First Study Treatment"
 $ RFXENDTC    : chr [1:254] "2014-07-02" "2012-09-01" "2014-01-14" "2014-03-31" ...
  ..- attr(*, "label")= chr "Date/Time of Last Study Treatment"
 $ RFICDTC     : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Date/Time of Informed Consent"
 $ RFPENDTC    : chr [1:254] "2014-07-02T11:45" "2013-02-18" "2014-01-14T11:10" "2014-09-15" ...
  ..- attr(*, "label")= chr "Date/Time of End of Participation"
 $ DTHDTC      : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Date/Time of Death"
 $ DTHFL       : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Subject Death Flag"
 $ SITEID      : chr [1:254] "701" "701" "701" "701" ...
  ..- attr(*, "label")= chr "Study Site Identifier"
 $ AGE         : num [1:254] 63 64 71 74 77 85 68 81 84 52 ...
  ..- attr(*, "label")= chr "Age"
 $ __origageu  : chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
  ..- attr(*, "label")= chr "Age Units"
 $ SEX         : chr [1:254] "F" "M" "M" "M" ...
  ..- attr(*, "label")= chr "Sex"
 $ __origrace  : chr [1:254] "WHITE" "WHITE" "WHITE" "WHITE" ...
  ..- attr(*, "label")= chr "Race"
 $ __origethnic: chr [1:254] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
  ..- attr(*, "label")= chr "Ethnicity"
 $ ARMCD       : chr [1:254] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  ..- attr(*, "label")= chr "Planned Arm Code"
 $ ARM         : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ ACTARMCD    : chr [1:254] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  ..- attr(*, "label")= chr "Actual Arm Code"
 $ ACTARM      : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Actual Arm"
 $ COUNTRY     : chr [1:254] "USA" "USA" "USA" "USA" ...
  ..- attr(*, "label")= chr "Country"
 $ DMDTC       : chr [1:254] "2013-12-26" "2012-07-22" "2013-07-11" "2014-03-10" ...
  ..- attr(*, "label")= chr "Date/Time of Collection"
 $ DMDY        : num [1:254] -7 -14 -8 -8 -7 -21 -9 -13 -7 -13 ...
  ..- attr(*, "label")= chr "Study Day of Collection"
 $ AGEU        : chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
 $ RACE        : chr [1:254] "WHITE" "WHITE" "WHITE" "WHITE" ...
 $ ETHNIC      : chr [1:254] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
 $ SITEGR1     : chr [1:254] "701" "701" "701" "701" ...
 $ TRT01P      : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ TRT01PN     : num [1:254] 0 0 81 54 81 0 54 54 54 0 ...
 $ AGEGR1      : chr [1:254] "<65" "<65" "65-80" "65-80" ...
 $ AGEGR1N     : num [1:254] 1 1 2 2 2 3 2 3 3 1 ...
 $ RACEN       : num [1:254] 1 1 1 1 1 1 1 1 1 1 ...
 $ ITTFL       : chr [1:254] "Y" "Y" "Y" "Y" ...
 $ RFENDT      : Date[1:254], format: "2014-07-02" "2012-09-02" ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Disposition Data (src_ds):\n")
Structure of Disposition Data (src_ds):
str(src_ds)
tibble [306 × 6] (S3: tbl_df/tbl/data.frame)
 $ USUBJID : chr [1:306] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..- attr(*, "format.sas")= chr "$11"
 $ VISNUMEN: num [1:306] NA NA NA NA NA NA 1 NA NA NA ...
 $ DCDECOD : chr [1:306] NA NA NA NA ...
 $ DCREASCD: chr [1:306] NA NA NA NA ...
 $ DISCONFL: chr [1:306] NA NA NA NA ...
 $ DSRAEFL : chr [1:306] NA NA NA NA ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Baseline Vitals (src_vs):\n")
Structure of Baseline Vitals (src_vs):
str(src_vs)
tibble [254 × 3] (S3: tbl_df/tbl/data.frame)
 $ USUBJID : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ HEIGHTBL: num [1:254] 147 163 178 175 155 ...
  ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
 $ WEIGHTBL: num [1:254] 54.4 80.3 99.3 88.5 62.6 ...
  ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Treatment Start & Subject Visit (src_sv):\n")
Structure of Treatment Start & Subject Visit (src_sv):
str(src_sv)
tibble [306 × 7] (S3: tbl_df/tbl/data.frame)
 $ USUBJID  : chr [1:306] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ VISIT1DT : Date[1:306], format: "2013-12-26" "2012-07-22" ...
 $ TRTSDT   : Date[1:306], format: "2014-01-02" "2012-08-05" ...
 $ __vis4dt : Date[1:306], format: "2014-01-16" "2012-08-27" ...
 $ __vis8dt : Date[1:306], format: "2014-03-05" NA ...
 $ __vis10dt: Date[1:306], format: "2014-05-07" NA ...
 $ __vis12dt: Date[1:306], format: "2014-06-18" NA ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Primary Diagnosis (src_mh):\n")
Structure of Primary Diagnosis (src_mh):
str(src_mh)
tibble [254 × 2] (S3: tbl_df/tbl/data.frame)
 $ USUBJID : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ DISONSDT: Date[1:254], format: "2010-04-30" "2006-03-11" ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Questionnaire Data (src_qs):\n")
Structure of Questionnaire Data (src_qs):
str(src_qs)
tibble [254 × 4] (S3: tbl_df/tbl/data.frame)
 $ USUBJID : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
 $ MMSETOT : num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
 $ __effalz: num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
 $ __effcli: num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------
cat("Structure of Exposure Data (src_ex):\n")
Structure of Exposure Data (src_ex):
str(src_ex)
tibble [254 × 11] (S3: tbl_df/tbl/data.frame)
 $ USUBJID: chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
  ..- attr(*, "format.sas")= chr "$11"
 $ EX03ST : Date[1:254], format: "2014-01-02" "2012-08-05" ...
 $ EX04ST : Date[1:254], format: "2014-01-17" "2012-08-28" ...
 $ EX12ST : Date[1:254], format: "2014-06-19" NA ...
 $ EX03EN : Date[1:254], format: "2014-01-16" "2012-08-27" ...
 $ EX04EN : Date[1:254], format: "2014-06-18" "2012-09-01" ...
 $ EX12EN : Date[1:254], format: "2014-07-02" NA ...
 $ EX03DS : num [1:254] 0 0 54 54 54 0 54 54 54 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ EX04DS : num [1:254] 0 0 81 NA 81 0 54 NA 54 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ EX12DS : num [1:254] 0 NA 54 NA 54 NA 54 NA NA 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ TRTEDT : Date[1:254], format: "2014-07-02" "2012-09-01" ...
cat("\n-----------------------------------------------\n")

-----------------------------------------------

Data Combination & Variable Creation

/*********************************************************************************/
/*** BEGIN SECTION TO COMBINE ALL THE SOURCE DATA AND CREATE REST OF VARIABLES ***/
/*********************************************************************************/
data adsl;
   merge src_:
         SDTM.SC (keep = USUBJID SCSTRESN SCTESTCD
                  where = (SCTESTCD = 'EDLEVEL')
                  rename = (SCSTRESN = EDUCLVL));
   by USUBJID;
   length SAFFL EFFFL $1 BMIBLGR1 $6  DURDSGR1 $4;
   if not missing(STUDYID);  /* STUDYID is only in src_dm */

   TRT01A = TRT01P;
   TRT01AN = TRT01PN;

   /* set population flags */
   SAFFL = ifc(not missing(TRTSDT), 'Y', 'N');
   EFFFL = ifc(__effalz = 1 and __effcli = 1, 'Y', 'N');

   /* CDISC has weight and height rounded to one decimal */
   if not missing(HEIGHTBL) then HEIGHTBL = round(HEIGHTBL, .1);
   if not missing(WEIGHTBL) then WEIGHTBL = round(WEIGHTBL, .1);
   if nmiss(HEIGHTBL, WEIGHTBL) = 0 then do;
      BMIBL = round(WEIGHTBL / ((HEIGHTBL / 100)**2), .1);
      if . < BMIBL < 25 then BMIBLGR1 = '<25';
      else if 25 <= BMIBL < 30 then BMIBLGR1 = '25-<30';
      else if BMIBL >= 30 then BMIBLGR1= '>=30';
   end;

   /* determine the number of months between diagnosis and visit 1 */
   DURDIS = round((VISIT1DT - DISONSDT + 1) / (365.25/12), .1);
   if not missing(DURDIS) and DURDIS < 12 then DURDSGR1 = '<12';
   else if DURDIS >= 12 then DURDSGR1 = '>=12';

   if nmiss(__vis8dt, RFENDT) = 0 and RFENDT >= __vis8dt then COMP8FL = 'Y';
   else COMP8FL = 'N';
   if nmiss(__vis10dt, RFENDT) = 0 and RFENDT >= __vis10dt then COMP16FL = 'Y';
   else COMP16FL = 'N';
   if nmiss(__vis12dt, RFENDT) = 0 and RFENDT >= __vis12dt then COMP24FL = 'Y';
   else COMP24FL = 'N';

   /* if missing treatment end date and subject discontinued after visit 3 then set end of treatment to discontinuation */
   if missing(TRTEDT) and nmiss(RFENDT, TRTSDT) = 0 and RFENDT > __vis3dt then TRTEDT = RFENDT;

   if nmiss(TRTSDT, TRTEDT) = 0 then TRTDUR = TRTEDT - TRTSDT + 1;

   /* calculate cumulative dose */
   if TRT01AN in (0 54) then CUMDOSE = TRTDUR * TRT01AN;
   else if TRT01AN = 81 then do;
      /* dosing interval 1 on 54 mg */
      if nmiss(__vis4dt, TRTSDT) = 0 then _doseint1 = min(TRTEDT, __vis4dt) - TRTSDT + 1;
      else if missing(__vis4dt) and nmiss(TRTSDT, RFENDT) = 0 and RFENDT > TRTSDT then _doseint1 = TRTEDT - TRTSDT + 1;
      if not missing(_doseint1) then ds_doseint1 = _doseint1 * 54;

      /* dosing interval 2 on 81 mg */
      if nmiss(__vis4dt, __vis12dt) = 0 then _doseint2 = min(TRTEDT, __vis12dt) - __vis4dt;
      else if missing(__vis12dt) and nmiss(__vis4dt, RFENDT) = 0 and RFENDT > __vis4dt then _doseint2 = TRTEDT - __vis4dt;
      if not missing(_doseint2) then ds_doseint2 = _doseint2 * 81;

      /* dosing interval 3 on 54 mg */
      if nmiss(__vis12dt, RFENDT) = 0 and RFENDT > __vis12dt then _doseint3 = TRTEDT - __vis12dt;
      if not missing(_doseint3) then ds_doseint3 = _doseint3 * 54;

      CUMDOSE = sum(of ds_doseint:);
   end;

   if nmiss(TRTDUR, CUMDOSE) = 0 then AVGDD = round(CUMDOSE / TRTDUR, .1);
run;
/*******************************************************************************/
/*** END SECTION TO COMBINE ALL THE SOURCE DATA AND CREATE REST OF VARIABLES ***/
/*******************************************************************************/
1          /*********************************************************************************/
2          /*** BEGIN SECTION TO COMBINE ALL THE SOURCE DATA AND CREATE REST OF VARIABLES ***/
3          /*********************************************************************************/
4          data adsl;
5             merge src_:
6                   SDTM.SC (keep = USUBJID SCSTRESN SCTESTCD
7                            where = (SCTESTCD = 'EDLEVEL')
8                            rename = (SCSTRESN = EDUCLVL));
9             by USUBJID;
10            length SAFFL EFFFL $1 BMIBLGR1 $6  DURDSGR1 $4;
11            if not missing(STUDYID);  /* STUDYID is only in src_dm */
12         
13            TRT01A = TRT01P;
14            TRT01AN = TRT01PN;
15         
16            /* set population flags */
17            SAFFL = ifc(not missing(TRTSDT), 'Y', 'N');
18            EFFFL = ifc(__effalz = 1 and __effcli = 1, 'Y', 'N');
19         
20            /* CDISC has weight and height rounded to one decimal */
21            if not missing(HEIGHTBL) then HEIGHTBL = round(HEIGHTBL, .1);
22            if not missing(WEIGHTBL) then WEIGHTBL = round(WEIGHTBL, .1);
23            if nmiss(HEIGHTBL, WEIGHTBL) = 0 then do;
24               BMIBL = round(WEIGHTBL / ((HEIGHTBL / 100)**2), .1);
25               if . < BMIBL < 25 then BMIBLGR1 = '<25';
26               else if 25 <= BMIBL < 30 then BMIBLGR1 = '25-<30';
27               else if BMIBL >= 30 then BMIBLGR1= '>=30';
28            end;
2                                                          The SAS System                                20:17 Monday, March 3, 2025

29         
30            /* determine the number of months between diagnosis and visit 1 */
31            DURDIS = round((VISIT1DT - DISONSDT + 1) / (365.25/12), .1);
32            if not missing(DURDIS) and DURDIS < 12 then DURDSGR1 = '<12';
33            else if DURDIS >= 12 then DURDSGR1 = '>=12';
34         
35            if nmiss(__vis8dt, RFENDT) = 0 and RFENDT >= __vis8dt then COMP8FL = 'Y';
36            else COMP8FL = 'N';
37            if nmiss(__vis10dt, RFENDT) = 0 and RFENDT >= __vis10dt then COMP16FL = 'Y';
38            else COMP16FL = 'N';
39            if nmiss(__vis12dt, RFENDT) = 0 and RFENDT >= __vis12dt then COMP24FL = 'Y';
40            else COMP24FL = 'N';
41         
42            /* if missing treatment end date and subject discontinued after visit 3 then set end of treatment to discontinuation
42       ! */
43            if missing(TRTEDT) and nmiss(RFENDT, TRTSDT) = 0 and RFENDT >= TRTSDT then TRTEDT = RFENDT;
44         
45            if nmiss(TRTSDT, TRTEDT) = 0 then TRTDUR = TRTEDT - TRTSDT + 1;
46         
47            /* calculate cumulative dose */
48            if TRT01AN in (0 54) then CUMDOSE = TRTDUR * TRT01AN;
49            else if TRT01AN = 81 then do;
50               /* dosing interval 1 on 54 mg */
51               if nmiss(__vis4dt, TRTSDT) = 0 then _doseint1 = min(TRTEDT, __vis4dt) - TRTSDT + 1;
52               else if missing(__vis4dt) and nmiss(TRTSDT, RFENDT) = 0 and RFENDT > TRTSDT then _doseint1 = TRTEDT - TRTSDT + 1;
53               if not missing(_doseint1) then ds_doseint1 = _doseint1 * 54;
54         
55               /* dosing interval 2 on 81 mg */
56               if nmiss(__vis4dt, __vis12dt) = 0 then _doseint2 = min(TRTEDT, __vis12dt) - __vis4dt;
57               else if missing(__vis12dt) and nmiss(__vis4dt, RFENDT) = 0 and RFENDT > __vis4dt then _doseint2 = TRTEDT - __vis4dt
57       ! ;
58               if not missing(_doseint2) then ds_doseint2 = _doseint2 * 81;
59         
60               /* dosing interval 3 on 54 mg */
61               if nmiss(__vis12dt, RFENDT) = 0 and RFENDT > __vis12dt then _doseint3 = TRTEDT - __vis12dt;
62               if not missing(_doseint3) then ds_doseint3 = _doseint3 * 54;
63         
64               CUMDOSE = sum(of ds_doseint:);
65            end;
66         
67            if nmiss(TRTDUR, CUMDOSE) = 0 then AVGDD = round(CUMDOSE / TRTDUR, .1);
68         run;

NOTE: There were 254 observations read from the data set WORK.SRC_DM.
NOTE: There were 306 observations read from the data set WORK.SRC_DS.
NOTE: There were 254 observations read from the data set WORK.SRC_EX.
NOTE: There were 254 observations read from the data set WORK.SRC_MH.
NOTE: There were 254 observations read from the data set WORK.SRC_QS.
NOTE: There were 306 observations read from the data set WORK.SRC_SV.
NOTE: There were 254 observations read from the data set WORK.SRC_VS.
NOTE: There were 254 observations read from the data set SDTM.SC.
      WHERE SCTESTCD='EDLEVEL';
NOTE: The data set WORK.ADSL has 254 observations and 82 variables.
NOTE: DATA statement used (Total process time):
      real time           0.11 seconds
      cpu time            0.09 seconds
      

3                                                          The SAS System                                20:17 Monday, March 3, 2025

69         /*******************************************************************************/
70         /*** END SECTION TO COMBINE ALL THE SOURCE DATA AND CREATE REST OF VARIABLES ***/
71         /*******************************************************************************/

ADSL: 254 observations - Created from SRC_: data sets and SDTM.SC (not shown)
# -----------------------------------------------
# Section 8: Combine All Source Data and Create Additional Variables (adsl)
# -----------------------------------------------
# Create a filtered SC dataset (only EDLEVEL) and rename SCSTRESN to EDUCLVL
sc_edulevel <- sdtm_data$sc %>%
  filter(SCTESTCD == "EDLEVEL") %>%
  select(USUBJID, EDUCLVL = SCSTRESN)

# Merge all processed source datasets by USUBJID.
# The merge order mirrors SAS's "merge src_:" plus the SC dataset.
adsl <- src_dm %>%
  left_join(src_ds, by = "USUBJID") %>%
  left_join(src_vs, by = "USUBJID") %>%
  left_join(src_sv, by = "USUBJID") %>%
  left_join(src_mh, by = "USUBJID") %>%
  left_join(src_qs, by = "USUBJID") %>%
  left_join(src_ex, by = "USUBJID") %>%
  left_join(sc_edulevel, by = "USUBJID") %>%
  # Retain only subjects with STUDYID (present in src_dm)
  filter(!is.na(STUDYID)) %>%
  # Create new variables based on SAS logic
  mutate(
    TRT01A = TRT01P,
    TRT01AN = TRT01PN,
    # Population flags:
    SAFFL = if_else(!is.na(TRTSDT), "Y", "N"),
    EFFFL = if_else(`__effalz` == 1 & `__effcli` == 1, "Y", "N"),
    # Round baseline height and weight to one decimal
    HEIGHTBL = round(HEIGHTBL, 1),
    WEIGHTBL = round(WEIGHTBL, 1),
    # Calculate baseline BMI if both height and weight are available
    BMIBL = if_else(!is.na(HEIGHTBL) & !is.na(WEIGHTBL),
                    round(WEIGHTBL / ((HEIGHTBL/100)^2), 1),
                    as.numeric(NA)),
    BMIBLGR1 = case_when(
      !is.na(BMIBL) & BMIBL < 25 ~ "<25",
      !is.na(BMIBL) & BMIBL >= 25 & BMIBL < 30 ~ "25-<30",
      !is.na(BMIBL) & BMIBL >= 30 ~ ">=30",
      TRUE ~ NA_character_
    ),
    # Calculate duration (in months) between diagnosis (DISONSDT) and visit 1 (VISIT1DT)
    DURDIS = if_else(!is.na(VISIT1DT) & !is.na(DISONSDT),
                     round((as.numeric(VISIT1DT - DISONSDT) + 1) / (365.25/12), 1),
                     as.numeric(NA)),
    DURDSGR1 = case_when(
      !is.na(DURDIS) & DURDIS < 12 ~ "<12",
      !is.na(DURDIS) & DURDIS >= 12 ~ ">=12",
      TRUE ~ NA_character_
    ),
    # Comparison flags: if RFENDT is on or after the corresponding visit date, flag "Y"
    COMP8FL = if_else(!is.na(`__vis8dt`) & !is.na(RFENDT) & (RFENDT >= `__vis8dt`), "Y", "N"),
    COMP16FL = if_else(!is.na(`__vis10dt`) & !is.na(RFENDT) & (RFENDT >= `__vis10dt`), "Y", "N"),
    COMP24FL = if_else(!is.na(`__vis12dt`) & !is.na(RFENDT) & (RFENDT >= `__vis12dt`), "Y", "N"),
    # If treatment end date is missing and the subject discontinued after visit 3,
    # then set TRTEDT equal to RFENDT.
    # Here we use TRTSDT (visit 3 date) as a proxy for __vis3dt.
    TRTEDT = if_else(is.na(TRTEDT) & !is.na(RFENDT) & !is.na(TRTSDT) & (RFENDT > TRTSDT),
                     RFENDT, TRTEDT),
    # Calculate treatment duration (in days): TRTEDT - TRTSDT + 1
    TRTDUR = if_else(!is.na(TRTSDT) & !is.na(TRTEDT),
                     as.numeric(TRTEDT - TRTSDT) + 1, as.numeric(NA))
  )

calculate_cumdose <- function(TRT01AN, TRTDUR, TRTSDT, TRTEDT, RFENDT, vis4, vis12) {
  if (!is.na(TRT01AN) && TRT01AN %in% c(0, 54)) {
    return(TRTDUR * TRT01AN)
  } else if (!is.na(TRT01AN) && TRT01AN == 81) {
    # Dosing Interval 1 on 54 mg:
    doseint1 <- if (!is.na(vis4) && !is.na(TRTSDT)) {
      min(TRTEDT, vis4) - TRTSDT + 1
    } else if (is.na(vis4) && !is.na(TRTSDT) && !is.na(RFENDT) && (RFENDT > TRTSDT)) {
      TRTEDT - TRTSDT + 1
    } else {
      NA_real_
    }
    ds_doseint1 <- if (!is.na(doseint1)) doseint1 * 54 else NA_real_
    
    # Dosing Interval 2 on 81 mg:
    doseint2 <- if (!is.na(vis4) && !is.na(vis12)) {
      min(TRTEDT, vis12) - vis4
    } else if (is.na(vis12) && !is.na(vis4) && !is.na(RFENDT) && (RFENDT > vis4)) {
      TRTEDT - vis4
    } else {
      NA_real_
    }
    ds_doseint2 <- if (!is.na(doseint2)) doseint2 * 81 else NA_real_
    
    # Dosing Interval 3 on 54 mg:
    doseint3 <- if (!is.na(vis12) && !is.na(RFENDT) && (RFENDT > vis12)) {
      TRTEDT - vis12
    } else {
      NA_real_
    }
    ds_doseint3 <- if (!is.na(doseint3)) doseint3 * 54 else NA_real_
    
    return(sum(c(ds_doseint1, ds_doseint2, ds_doseint3), na.rm = TRUE))
  } else {
    return(NA_real_)
  }
}

# Compute cumulative dose using pmap_dbl (applies the function rowwise and returns a double)
adsl <- adsl %>%
  mutate(
    CUMDOSE = pmap_dbl(
      list(TRT01AN, TRTDUR, TRTSDT, TRTEDT, RFENDT, `__vis4dt`, `__vis12dt`),
      ~ calculate_cumdose(..1, ..2, ..3, ..4, ..5, ..6, ..7)
    ),
    AVGDD = if_else(!is.na(TRTDUR) & !is.na(CUMDOSE),
                    round(CUMDOSE / TRTDUR, 1),
                    as.numeric(NA))
  )

# -----------------------------------------------
# Final Output Examination of Combined Data (adsl)
# -----------------------------------------------
cat("Structure of Combined Data (adsl):\n")
Structure of Combined Data (adsl):
str(adsl)
tibble [254 × 78] (S3: tbl_df/tbl/data.frame)
 $ STUDYID     : chr [1:254] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  ..- attr(*, "label")= chr "Study Identifier"
 $ DOMAIN      : chr [1:254] "DM" "DM" "DM" "DM" ...
  ..- attr(*, "label")= chr "Domain Abbreviation"
 $ USUBJID     : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ SUBJID      : chr [1:254] "1015" "1023" "1028" "1033" ...
  ..- attr(*, "label")= chr "Subject Identifier for the Study"
 $ RFSTDTC     : chr [1:254] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  ..- attr(*, "label")= chr "Subject Reference Start Date/Time"
 $ RFENDTC     : chr [1:254] "2014-07-02" "2012-09-02" "2014-01-14" "2014-04-14" ...
  ..- attr(*, "label")= chr "Subject Reference End Date/Time"
 $ RFXSTDTC    : chr [1:254] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  ..- attr(*, "label")= chr "Date/Time of First Study Treatment"
 $ RFXENDTC    : chr [1:254] "2014-07-02" "2012-09-01" "2014-01-14" "2014-03-31" ...
  ..- attr(*, "label")= chr "Date/Time of Last Study Treatment"
 $ RFICDTC     : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Date/Time of Informed Consent"
 $ RFPENDTC    : chr [1:254] "2014-07-02T11:45" "2013-02-18" "2014-01-14T11:10" "2014-09-15" ...
  ..- attr(*, "label")= chr "Date/Time of End of Participation"
 $ DTHDTC      : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Date/Time of Death"
 $ DTHFL       : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Subject Death Flag"
 $ SITEID      : chr [1:254] "701" "701" "701" "701" ...
  ..- attr(*, "label")= chr "Study Site Identifier"
 $ AGE         : num [1:254] 63 64 71 74 77 85 68 81 84 52 ...
  ..- attr(*, "label")= chr "Age"
 $ __origageu  : chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
  ..- attr(*, "label")= chr "Age Units"
 $ SEX         : chr [1:254] "F" "M" "M" "M" ...
  ..- attr(*, "label")= chr "Sex"
 $ __origrace  : chr [1:254] "WHITE" "WHITE" "WHITE" "WHITE" ...
  ..- attr(*, "label")= chr "Race"
 $ __origethnic: chr [1:254] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
  ..- attr(*, "label")= chr "Ethnicity"
 $ ARMCD       : chr [1:254] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  ..- attr(*, "label")= chr "Planned Arm Code"
 $ ARM         : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ ACTARMCD    : chr [1:254] "Pbo" "Pbo" "Xan_Hi" "Xan_Lo" ...
  ..- attr(*, "label")= chr "Actual Arm Code"
 $ ACTARM      : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Actual Arm"
 $ COUNTRY     : chr [1:254] "USA" "USA" "USA" "USA" ...
  ..- attr(*, "label")= chr "Country"
 $ DMDTC       : chr [1:254] "2013-12-26" "2012-07-22" "2013-07-11" "2014-03-10" ...
  ..- attr(*, "label")= chr "Date/Time of Collection"
 $ DMDY        : num [1:254] -7 -14 -8 -8 -7 -21 -9 -13 -7 -13 ...
  ..- attr(*, "label")= chr "Study Day of Collection"
 $ AGEU        : chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
 $ RACE        : chr [1:254] "WHITE" "WHITE" "WHITE" "WHITE" ...
 $ ETHNIC      : chr [1:254] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
 $ SITEGR1     : chr [1:254] "701" "701" "701" "701" ...
 $ TRT01P      : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ TRT01PN     : num [1:254] 0 0 81 54 81 0 54 54 54 0 ...
 $ AGEGR1      : chr [1:254] "<65" "<65" "65-80" "65-80" ...
 $ AGEGR1N     : num [1:254] 1 1 2 2 2 3 2 3 3 1 ...
 $ RACEN       : num [1:254] 1 1 1 1 1 1 1 1 1 1 ...
 $ ITTFL       : chr [1:254] "Y" "Y" "Y" "Y" ...
 $ RFENDT      : Date[1:254], format: "2014-07-02" "2012-09-02" ...
 $ VISNUMEN    : num [1:254] NA NA NA NA NA NA NA NA NA NA ...
 $ DCDECOD     : chr [1:254] NA NA NA NA ...
 $ DCREASCD    : chr [1:254] NA NA NA NA ...
 $ DISCONFL    : chr [1:254] NA NA NA NA ...
 $ DSRAEFL     : chr [1:254] NA NA NA NA ...
 $ HEIGHTBL    : num [1:254] 147 163 178 175 155 ...
  ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
 $ WEIGHTBL    : num [1:254] 54.4 80.3 99.3 88.4 62.6 67.1 78 59.9 78.9 71.2 ...
  ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
 $ VISIT1DT    : Date[1:254], format: "2013-12-26" "2012-07-22" ...
 $ TRTSDT      : Date[1:254], format: "2014-01-02" "2012-08-05" ...
 $ __vis4dt    : Date[1:254], format: "2014-01-16" "2012-08-27" ...
 $ __vis8dt    : Date[1:254], format: "2014-03-05" NA ...
 $ __vis10dt   : Date[1:254], format: "2014-05-07" NA ...
 $ __vis12dt   : Date[1:254], format: "2014-06-18" NA ...
 $ DISONSDT    : Date[1:254], format: "2010-04-30" "2006-03-11" ...
 $ MMSETOT     : num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
 $ __effalz    : num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
 $ __effcli    : num [1:254] 0 0 0 0 0 0 0 0 0 0 ...
 $ EX03ST      : Date[1:254], format: "2014-01-02" "2012-08-05" ...
 $ EX04ST      : Date[1:254], format: "2014-01-17" "2012-08-28" ...
 $ EX12ST      : Date[1:254], format: "2014-06-19" NA ...
 $ EX03EN      : Date[1:254], format: "2014-01-16" "2012-08-27" ...
 $ EX04EN      : Date[1:254], format: "2014-06-18" "2012-09-01" ...
 $ EX12EN      : Date[1:254], format: "2014-07-02" NA ...
 $ EX03DS      : num [1:254] 0 0 54 54 54 0 54 54 54 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ EX04DS      : num [1:254] 0 0 81 NA 81 0 54 NA 54 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ EX12DS      : num [1:254] 0 NA 54 NA 54 NA 54 NA NA 0 ...
  ..- attr(*, "label")= chr "Dose"
 $ TRTEDT      : Date[1:254], format: "2014-07-02" "2012-09-01" ...
 $ EDUCLVL     : num [1:254] NA NA NA NA NA NA NA NA NA NA ...
  ..- attr(*, "label")= chr "Numeric Result/Finding in Standard Units"
 $ TRT01A      : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ TRT01AN     : num [1:254] 0 0 81 54 81 0 54 54 54 0 ...
 $ SAFFL       : chr [1:254] "Y" "Y" "Y" "Y" ...
 $ EFFFL       : chr [1:254] "N" "N" "N" "N" ...
 $ BMIBL       : num [1:254] 25.1 30.4 31.4 28.8 26.1 30.4 27.3 23.9 23.9 21.9 ...
 $ BMIBLGR1    : chr [1:254] "25-<30" ">=30" ">=30" "25-<30" ...
 $ DURDIS      : num [1:254] 43.9 76.4 42.8 55.3 32.9 ...
 $ DURDSGR1    : chr [1:254] ">=12" ">=12" ">=12" ">=12" ...
 $ COMP8FL     : chr [1:254] "Y" "N" "Y" "N" ...
 $ COMP16FL    : chr [1:254] "Y" "N" "Y" "N" ...
 $ COMP24FL    : chr [1:254] "Y" "N" "Y" "N" ...
 $ TRTDUR      : num [1:254] 182 28 180 14 183 26 190 10 55 182 ...
 $ CUMDOSE     : num [1:254] 0 0 13986 756 14067 ...
 $ AVGDD       : num [1:254] 0 0 77.7 54 76.9 0 54 54 54 0 ...

Create Final Dataset

/**********************************************/
/*** BEGIN SECTION TO CREATE FINAL DATA SET ***/
/**********************************************/
data ADAM.ADSL (label = 'Subject-Level Analysis Data');
   set adslskel adsl;
   keep &allvars;
run;

/* compare to the CDISC version */
proc compare base = CADAM.ADSL compare = ADAM.ADSL listall;
   id USUBJID;
run;
/********************************************/
/*** END SECTION TO CREATE FINAL DATA SET ***/
/********************************************/
1          /**********************************************/
2          /*** BEGIN SECTION TO CREATE FINAL DATA SET ***/
3          /**********************************************/
4          data ADAM.ADSL (label = 'Subject-Level Analysis Data');
5             set adslskel adsl;
6             keep &allvars;
7          run;

NOTE: There were 0 observations read from the data set WORK.ADSLSKEL.
NOTE: There were 254 observations read from the data set WORK.ADSL.
NOTE: The data set ADAM.ADSL has 254 observations and 48 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.01 seconds
      

8          
9          /* compare to the CDISC version */
10         proc compare base = CADAM.ADSL compare = ADAM.ADSL listall;
11            id USUBJID;
12         run;

NOTE: There were 254 observations read from the data set CADAM.ADSL.
NOTE: There were 254 observations read from the data set ADAM.ADSL.
NOTE: PROCEDURE COMPARE used (Total process time):
      real time           0.04 seconds
      cpu time            0.04 seconds
      

2                                                          The SAS System                                20:17 Monday, March 3, 2025

13         /********************************************/
14         /*** END SECTION TO CREATE FINAL DATA SET ***/
15         /********************************************/

ADaM.ADSL: 254 observations

Comparison with CDISC Version of ADSL - One Discrepancy
# -----------------------------------------------
# Section 8: Create Final ADaM ADSL Dataset and Compare to Reference
# -----------------------------------------------

# If the shell dataset is empty, simply use adsl.
if (nrow(adsl_shell) == 0) {
  final_adsl <- adsl
} else {
  # If adsl_shell is not empty, convert relevant date columns to Date type.
  adsl_shell <- adsl_shell %>%
    mutate(
      TRTSDT = as.Date(TRTSDT, origin = "1970-01-01"),
      TRTEDT = as.Date(TRTEDT, origin = "1970-01-01"),
      VISIT1DT = as.Date(VISIT1DT, origin = "1970-01-01"),
      RFENDT = as.Date(RFENDT, origin = "1970-01-01")
    )
  final_adsl <- bind_rows(adsl_shell, adsl)
}

# Restrict final_adsl to only the variables specified in adsl_specs$Variable.
# This replicates SAS "keep &allvars;" where &allvars is built from adsl_specs$Variable.
allvars <- adsl_specs$Variable
final_adsl <- final_adsl %>% select(all_of(allvars))

# Assign a label attribute to the final dataset (for documentation purposes).
attr(final_adsl, "label") <- "Subject-Level Analysis Data"

# Save the final ADaM ADSL dataset in an object (simulate ADAM.ADSL).
ADAM_ADSL <- final_adsl

# -----------------------------------------------
# Compare the Final ADaM ADSL Dataset to the Reference CDISC Version
# -----------------------------------------------
# Assume the reference dataset is loaded as CADAM_ADSL.
# Use the waldo package to compare the two datasets by USUBJID.

# Load the reference CDISC ADaM ADSL data
CADAM_ADSL <- adam_adsl

# View its structure to confirm
str(CADAM_ADSL)
tibble [254 × 48] (S3: tbl_df/tbl/data.frame)
 $ STUDYID : chr [1:254] "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" "CDISCPILOT01" ...
  ..- attr(*, "label")= chr "Study Identifier"
 $ USUBJID : chr [1:254] "01-701-1015" "01-701-1023" "01-701-1028" "01-701-1033" ...
  ..- attr(*, "label")= chr "Unique Subject Identifier"
 $ SUBJID  : chr [1:254] "1015" "1023" "1028" "1033" ...
  ..- attr(*, "label")= chr "Subject Identifier for the Study"
 $ SITEID  : chr [1:254] "701" "701" "701" "701" ...
  ..- attr(*, "label")= chr "Study Site Identifier"
 $ SITEGR1 : chr [1:254] "701" "701" "701" "701" ...
  ..- attr(*, "label")= chr "Pooled Site Group 1"
 $ ARM     : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Description of Planned Arm"
 $ TRT01P  : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Planned Treatment for Period 01"
 $ TRT01PN : num [1:254] 0 0 81 54 81 0 54 54 54 0 ...
  ..- attr(*, "label")= chr "Planned Treatment for Period 01 (N)"
 $ TRT01A  : chr [1:254] "Placebo" "Placebo" "Xanomeline High Dose" "Xanomeline Low Dose" ...
  ..- attr(*, "label")= chr "Actual Treatment for Period 01"
 $ TRT01AN : num [1:254] 0 0 81 54 81 0 54 54 54 0 ...
  ..- attr(*, "label")= chr "Actual Treatment for Period 01 (N)"
 $ TRTSDT  : Date[1:254], format: "2014-01-02" "2012-08-05" ...
 $ TRTEDT  : Date[1:254], format: "2014-07-02" "2012-09-01" ...
 $ TRTDUR  : num [1:254] 182 28 180 14 183 26 190 10 55 182 ...
  ..- attr(*, "label")= chr "Duration of Treatment (days)"
 $ AVGDD   : num [1:254] 0 0 77.7 54 76.9 0 54 54 54 0 ...
  ..- attr(*, "label")= chr "Avg Daily Dose (as planned)"
 $ CUMDOSE : num [1:254] 0 0 13986 756 14067 ...
  ..- attr(*, "label")= chr "Cumulative Dose (as planned)"
 $ AGE     : num [1:254] 63 64 71 74 77 85 68 81 84 52 ...
  ..- attr(*, "label")= chr "Age"
 $ AGEGR1  : chr [1:254] "<65" "<65" "65-80" "65-80" ...
  ..- attr(*, "label")= chr "Pooled Age Group 1"
 $ AGEGR1N : num [1:254] 1 1 2 2 2 3 2 3 3 1 ...
  ..- attr(*, "label")= chr "Pooled Age Group 1 (N)"
 $ AGEU    : chr [1:254] "YEARS" "YEARS" "YEARS" "YEARS" ...
  ..- attr(*, "label")= chr "Age Units"
 $ RACE    : chr [1:254] "WHITE" "WHITE" "WHITE" "WHITE" ...
  ..- attr(*, "label")= chr "Race"
 $ RACEN   : num [1:254] 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "label")= chr "Race (N)"
 $ SEX     : chr [1:254] "F" "M" "M" "M" ...
  ..- attr(*, "label")= chr "Sex"
 $ ETHNIC  : chr [1:254] "HISPANIC OR LATINO" "HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" "NOT HISPANIC OR LATINO" ...
  ..- attr(*, "label")= chr "Ethnicity"
 $ SAFFL   : chr [1:254] "Y" "Y" "Y" "Y" ...
  ..- attr(*, "label")= chr "Safety Population Flag"
 $ ITTFL   : chr [1:254] "Y" "Y" "Y" "Y" ...
  ..- attr(*, "label")= chr "Intent-To-Treat Population Flag"
 $ EFFFL   : chr [1:254] "Y" "Y" "Y" "Y" ...
  ..- attr(*, "label")= chr "Efficacy Population Flag"
 $ COMP8FL : chr [1:254] "Y" "N" "Y" "N" ...
  ..- attr(*, "label")= chr "Completers of Week 8 Population Flag"
 $ COMP16FL: chr [1:254] "Y" "N" "Y" "N" ...
  ..- attr(*, "label")= chr "Completers of Week 16 Population Flag"
 $ COMP24FL: chr [1:254] "Y" "N" "Y" "N" ...
  ..- attr(*, "label")= chr "Completers of Week 24 Population Flag"
 $ DISCONFL: chr [1:254] "" "Y" "" "Y" ...
  ..- attr(*, "label")= chr "Did the Subject Discontinue the Study?"
 $ DSRAEFL : chr [1:254] "" "Y" "" "" ...
  ..- attr(*, "label")= chr "Discontinued due to AE?"
 $ DTHFL   : chr [1:254] "" "" "" "" ...
  ..- attr(*, "label")= chr "Subject Died?"
 $ BMIBL   : num [1:254] 25.1 30.4 31.4 28.8 26.1 30.4 27.3 23.9 23.9 21.9 ...
  ..- attr(*, "label")= chr "Baseline BMI (kg/m^2)"
 $ BMIBLGR1: chr [1:254] "25-<30" ">=30" ">=30" "25-<30" ...
  ..- attr(*, "label")= chr "Pooled Baseline BMI Group 1"
 $ HEIGHTBL: num [1:254] 147 163 178 175 155 ...
  ..- attr(*, "label")= chr "Baseline Height (cm)"
 $ WEIGHTBL: num [1:254] 54.4 80.3 99.3 88.5 62.6 67.1 78 59.9 78.9 71.2 ...
  ..- attr(*, "label")= chr "Baseline Weight (kg)"
 $ EDUCLVL : num [1:254] 16 14 16 12 9 8 18 22 12 14 ...
  ..- attr(*, "label")= chr "Years of Education"
 $ DISONSDT: Date[1:254], format: "2010-04-30" "2006-03-11" ...
 $ DURDIS  : num [1:254] 43.9 76.4 42.8 55.3 32.9 ...
  ..- attr(*, "label")= chr "Duration of Disease (Months)"
 $ DURDSGR1: chr [1:254] ">=12" ">=12" ">=12" ">=12" ...
  ..- attr(*, "label")= chr "Pooled Disease Duration Group 1"
 $ VISIT1DT: Date[1:254], format: "2013-12-26" "2012-07-22" ...
 $ RFSTDTC : chr [1:254] "2014-01-02" "2012-08-05" "2013-07-19" "2014-03-18" ...
  ..- attr(*, "label")= chr "Subject Reference Start Date/Time"
 $ RFENDTC : chr [1:254] "2014-07-02" "2012-09-02" "2014-01-14" "2014-04-14" ...
  ..- attr(*, "label")= chr "Subject Reference End Date/Time"
 $ VISNUMEN: num [1:254] 12 5 12 5 12 6 12 4 8 12 ...
  ..- attr(*, "label")= chr "End of Trt Visit (Vis 12 or Early Term.)"
 $ RFENDT  : Date[1:254], format: "2014-07-02" "2012-09-02" ...
 $ DCDECOD : chr [1:254] "COMPLETED" "ADVERSE EVENT" "COMPLETED" "STUDY TERMINATED BY SPONSOR" ...
  ..- attr(*, "label")= chr "Standardized Disposition Term"
 $ DCREASCD: chr [1:254] "Completed" "Adverse Event" "Completed" "Sponsor Decision" ...
  ..- attr(*, "label")= chr "Reason for Discontinuation"
 $ MMSETOT : num [1:254] 23 23 23 23 21 23 10 23 20 20 ...
  ..- attr(*, "label")= chr "MMSE Total"
# Sort both datasets by USUBJID before comparing.
compare(
  CADAM_ADSL %>% arrange(USUBJID),
  ADAM_ADSL %>% arrange(USUBJID),
  x_arg = "CADAM.ADSL", y_arg = "ADAM.ADSL",
  ignore_attr = TRUE,
  max_diffs = Inf
)
      CADAM.ADSL[[12]] | ADAM.ADSL[[12]]      
 [96] 16093.0          | 16093.0         [96] 
 [97] 15956.0          | 15956.0         [97] 
 [98] 16136.0          | 16136.0         [98] 
 [99] 15838.0          - NA              [99] 
[100] 15737.0          | 15737.0         [100]
[101] 16058.0          | 16058.0         [101]
[102] 16279.0          | 16279.0         [102]

`CADAM.ADSL[[13]][96:102]`: 83.0 183.0 63.0 1.0 148.0 180.0 210.0
 `ADAM.ADSL[[13]][96:102]`: 83.0 183.0 63.0  NA 148.0 180.0 210.0

`CADAM.ADSL[[14]][63:69]`: 0.00 72.40 54.00 74.30 72.20 76.50 54.00
 `ADAM.ADSL[[14]][63:69]`: 0.00 72.40 54.00 74.20 72.20 76.50 54.00

`CADAM.ADSL[[14]][96:102]`: 74.20 0.00 71.60 54.00 54.00 54.00 0.00
 `ADAM.ADSL[[14]][96:102]`: 74.20 0.00 71.60    NA 54.00 54.00 0.00

`CADAM.ADSL[[14]][122:128]`: 0.00 76.70 0.00 74.30 54.00 54.00 54.00
 `ADAM.ADSL[[14]][122:128]`: 0.00 76.70 0.00 74.20 54.00 54.00 54.00

`CADAM.ADSL[[15]][96:102]`: 6156.0 0.0 4509.0 54.0 7992.0 9720.0 0.0
 `ADAM.ADSL[[15]][96:102]`: 6156.0 0.0 4509.0  0.0 7992.0 9720.0 0.0

`CADAM.ADSL[[21]][21:27]`: 1.0 1.0 1.0 6.0 1.0 1.0 1.0
 `ADAM.ADSL[[21]][21:27]`: 1.0 1.0 1.0 3.0 1.0 1.0 1.0

      CADAM.ADSL[[26]] | ADAM.ADSL[[26]]      
  [1] "Y"              - "N"             [1]  
  [2] "Y"              - "N"             [2]  
  [3] "Y"              - "N"             [3]  
  [4] "Y"              - "N"             [4]  
  [5] "Y"              - "N"             [5]  
  [6] "Y"              - "N"             [6]  
  [7] "Y"              - "N"             [7]  
  [8] "Y"              - "N"             [8]  
  [9] "Y"              - "N"             [9]  
 [10] "Y"              - "N"             [10] 
 [11] "Y"              - "N"             [11] 
 [12] "Y"              - "N"             [12] 
 [13] "Y"              - "N"             [13] 
 [14] "Y"              - "N"             [14] 
 [15] "Y"              - "N"             [15] 
 [16] "Y"              - "N"             [16] 
 [17] "Y"              - "N"             [17] 
 [18] "Y"              - "N"             [18] 
 [19] "Y"              - "N"             [19] 
 [20] "Y"              - "N"             [20] 
 [21] "Y"              - "N"             [21] 
 [22] "Y"              - "N"             [22] 
 [23] "Y"              - "N"             [23] 
 [24] "Y"              - "N"             [24] 
 [25] "Y"              - "N"             [25] 
 [26] "Y"              - "N"             [26] 
 [27] "Y"              - "N"             [27] 
 [28] "Y"              - "N"             [28] 
 [29] "Y"              - "N"             [29] 
 [30] "Y"              - "N"             [30] 
 [31] "Y"              - "N"             [31] 
 [32] "Y"              - "N"             [32] 
 [33] "Y"              - "N"             [33] 
 [34] "Y"              - "N"             [34] 
 [35] "Y"              - "N"             [35] 
 [36] "Y"              - "N"             [36] 
 [37] "Y"              - "N"             [37] 
 [38] "Y"              - "N"             [38] 
 [39] "Y"              - "N"             [39] 
 [40] "Y"              - "N"             [40] 
 [41] "Y"              - "N"             [41] 
 [42] "Y"              - "N"             [42] 
 [43] "Y"              - "N"             [43] 
 [44] "Y"              - "N"             [44] 
 [45] "Y"              - "N"             [45] 
 [46] "N"              | "N"             [46] 
 [47] "Y"              - "N"             [47] 
 [48] "Y"              - "N"             [48] 
 [49] "Y"              - "N"             [49] 
 [50] "Y"              - "N"             [50] 
 [51] "Y"              - "N"             [51] 
 [52] "Y"              - "N"             [52] 
 [53] "Y"              - "N"             [53] 
 [54] "N"              | "N"             [54] 
 [55] "Y"              - "N"             [55] 
 [56] "Y"              - "N"             [56] 
 [57] "Y"              - "N"             [57] 
 [58] "Y"              - "N"             [58] 
 [59] "N"              | "N"             [59] 
 [60] "Y"              - "N"             [60] 
 [61] "Y"              - "N"             [61] 
 [62] "Y"              - "N"             [62] 
 [63] "Y"              - "N"             [63] 
 [64] "Y"              - "N"             [64] 
 [65] "Y"              - "N"             [65] 
 [66] "Y"              - "N"             [66] 
 [67] "Y"              - "N"             [67] 
 [68] "Y"              - "N"             [68] 
 [69] "Y"              - "N"             [69] 
 [70] "Y"              - "N"             [70] 
 [71] "Y"              - "N"             [71] 
 [72] "Y"              - "N"             [72] 
 [73] "Y"              - "N"             [73] 
 [74] "Y"              - "N"             [74] 
 [75] "Y"              - "N"             [75] 
 [76] "Y"              - "N"             [76] 
 [77] "Y"              - "N"             [77] 
 [78] "Y"              - "N"             [78] 
 [79] "N"              | "N"             [79] 
 [80] "Y"              - "N"             [80] 
 [81] "Y"              - "N"             [81] 
 [82] "Y"              - "N"             [82] 
 [83] "Y"              - "N"             [83] 
 [84] "Y"              - "N"             [84] 
 [85] "Y"              - "N"             [85] 
 [86] "N"              | "N"             [86] 
 [87] "Y"              - "N"             [87] 
 [88] "Y"              - "N"             [88] 
 [89] "N"              | "N"             [89] 
 [90] "Y"              - "N"             [90] 
 [91] "Y"              - "N"             [91] 
 [92] "Y"              - "N"             [92] 
 [93] "Y"              - "N"             [93] 
 [94] "Y"              - "N"             [94] 
 [95] "Y"              - "N"             [95] 
 [96] "Y"              - "N"             [96] 
 [97] "Y"              - "N"             [97] 
 [98] "N"              | "N"             [98] 
 [99] "N"              | "N"             [99] 
[100] "Y"              - "N"             [100]
[101] "Y"              - "N"             [101]
[102] "Y"              - "N"             [102]
[103] "Y"              - "N"             [103]
[104] "Y"              - "N"             [104]
[105] "Y"              - "N"             [105]
[106] "Y"              - "N"             [106]
[107] "Y"              - "N"             [107]
[108] "Y"              - "N"             [108]
[109] "Y"              - "N"             [109]
[110] "Y"              - "N"             [110]
[111] "Y"              - "N"             [111]
[112] "Y"              - "N"             [112]
[113] "Y"              - "N"             [113]
[114] "N"              | "N"             [114]
[115] "Y"              - "N"             [115]
[116] "N"              | "N"             [116]
[117] "Y"              - "N"             [117]
[118] "Y"              - "N"             [118]
[119] "Y"              - "N"             [119]
[120] "Y"              - "N"             [120]
[121] "Y"              - "N"             [121]
[122] "Y"              - "N"             [122]
[123] "Y"              - "N"             [123]
[124] "Y"              - "N"             [124]
[125] "Y"              - "N"             [125]
[126] "Y"              - "N"             [126]
[127] "Y"              - "N"             [127]
[128] "N"              | "N"             [128]
[129] "Y"              - "N"             [129]
[130] "Y"              - "N"             [130]
[131] "Y"              - "N"             [131]
[132] "Y"              - "N"             [132]
[133] "N"              | "N"             [133]
[134] "Y"              - "N"             [134]
[135] "Y"              - "N"             [135]
[136] "Y"              - "N"             [136]
[137] "Y"              - "N"             [137]
[138] "Y"              - "N"             [138]
[139] "Y"              - "N"             [139]
[140] "Y"              - "N"             [140]
[141] "Y"              - "N"             [141]
[142] "Y"              - "N"             [142]
[143] "Y"              - "N"             [143]
[144] "Y"              - "N"             [144]
[145] "Y"              - "N"             [145]
[146] "Y"              - "N"             [146]
[147] "Y"              - "N"             [147]
[148] "Y"              - "N"             [148]
[149] "Y"              - "N"             [149]
[150] "Y"              - "N"             [150]
[151] "Y"              - "N"             [151]
[152] "Y"              - "N"             [152]
[153] "Y"              - "N"             [153]
[154] "Y"              - "N"             [154]
[155] "N"              | "N"             [155]
[156] "Y"              - "N"             [156]
[157] "Y"              - "N"             [157]
[158] "Y"              - "N"             [158]
[159] "Y"              - "N"             [159]
[160] "Y"              - "N"             [160]
[161] "Y"              - "N"             [161]
[162] "Y"              - "N"             [162]
[163] "N"              | "N"             [163]
[164] "N"              | "N"             [164]
[165] "Y"              - "N"             [165]
[166] "Y"              - "N"             [166]
[167] "Y"              - "N"             [167]
[168] "Y"              - "N"             [168]
[169] "Y"              - "N"             [169]
[170] "Y"              - "N"             [170]
[171] "Y"              - "N"             [171]
[172] "Y"              - "N"             [172]
[173] "Y"              - "N"             [173]
[174] "N"              | "N"             [174]
[175] "Y"              - "N"             [175]
[176] "Y"              - "N"             [176]
[177] "N"              | "N"             [177]
[178] "Y"              - "N"             [178]
[179] "Y"              - "N"             [179]
[180] "Y"              - "N"             [180]
[181] "Y"              - "N"             [181]
[182] "Y"              - "N"             [182]
[183] "Y"              - "N"             [183]
[184] "Y"              - "N"             [184]
[185] "Y"              - "N"             [185]
[186] "Y"              - "N"             [186]
[187] "N"              | "N"             [187]
[188] "Y"              - "N"             [188]
[189] "Y"              - "N"             [189]
[190] "Y"              - "N"             [190]
[191] "N"              | "N"             [191]
[192] "Y"              - "N"             [192]
[193] "Y"              - "N"             [193]
[194] "Y"              - "N"             [194]
[195] "Y"              - "N"             [195]
[196] "Y"              - "N"             [196]
[197] "Y"              - "N"             [197]
[198] "Y"              - "N"             [198]
[199] "Y"              - "N"             [199]
[200] "Y"              - "N"             [200]
[201] "Y"              - "N"             [201]
[202] "Y"              - "N"             [202]
[203] "Y"              - "N"             [203]
[204] "Y"              - "N"             [204]
[205] "N"              | "N"             [205]
[206] "Y"              - "N"             [206]
[207] "Y"              - "N"             [207]
[208] "Y"              - "N"             [208]
[209] "Y"              - "N"             [209]
[210] "Y"              - "N"             [210]
[211] "Y"              - "N"             [211]
[212] "Y"              - "N"             [212]
[213] "Y"              - "N"             [213]
[214] "Y"              - "N"             [214]
[215] "Y"              - "N"             [215]
[216] "Y"              - "N"             [216]
[217] "Y"              - "N"             [217]
[218] "Y"              - "N"             [218]
[219] "Y"              - "N"             [219]
[220] "Y"              - "N"             [220]
[221] "Y"              - "N"             [221]
[222] "Y"              - "N"             [222]
[223] "Y"              - "N"             [223]
[224] "Y"              - "N"             [224]
[225] "Y"              - "N"             [225]
[226] "Y"              - "N"             [226]
[227] "Y"              - "N"             [227]
[228] "Y"              - "N"             [228]
[229] "Y"              - "N"             [229]
[230] "Y"              - "N"             [230]
[231] "Y"              - "N"             [231]
[232] "Y"              - "N"             [232]
[233] "Y"              - "N"             [233]
[234] "Y"              - "N"             [234]
[235] "Y"              - "N"             [235]
[236] "Y"              - "N"             [236]
[237] "Y"              - "N"             [237]
[238] "Y"              - "N"             [238]
[239] "Y"              - "N"             [239]
[240] "Y"              - "N"             [240]
[241] "Y"              - "N"             [241]
[242] "Y"              - "N"             [242]
[243] "Y"              - "N"             [243]
[244] "Y"              - "N"             [244]
[245] "Y"              - "N"             [245]
[246] "Y"              - "N"             [246]
[247] "Y"              - "N"             [247]
[248] "Y"              - "N"             [248]
[249] "Y"              - "N"             [249]
[250] "Y"              - "N"             [250]
[251] "Y"              - "N"             [251]
[252] "Y"              - "N"             [252]
[253] "Y"              - "N"             [253]
[254] "Y"              - "N"             [254]

      CADAM.ADSL[[30]] | ADAM.ADSL[[30]]      
  [1] ""               - NA              [1]  
  [2] "Y"              - NA              [2]  
  [3] ""               - NA              [3]  
  [4] "Y"              - NA              [4]  
  [5] ""               - NA              [5]  
  [6] "Y"              - NA              [6]  
  [7] ""               - NA              [7]  
  [8] "Y"              - NA              [8]  
  [9] "Y"              - NA              [9]  
 [10] ""               - NA              [10] 
 [11] ""               - NA              [11] 
 [12] ""               - NA              [12] 
 [13] "Y"              - NA              [13] 
 [14] ""               - NA              [14] 
 [15] ""               - NA              [15] 
 [16] "Y"              - NA              [16] 
 [17] "Y"              - NA              [17] 
 [18] "Y"              - NA              [18] 
 [19] ""               - NA              [19] 
 [20] ""               - NA              [20] 
 [21] "Y"              - NA              [21] 
 [22] ""               - NA              [22] 
 [23] ""               - NA              [23] 
 [24] "Y"              - NA              [24] 
 [25] ""               - NA              [25] 
 [26] "Y"              - NA              [26] 
 [27] "Y"              - NA              [27] 
 [28] ""               - NA              [28] 
 [29] ""               - NA              [29] 
 [30] "Y"              - NA              [30] 
 [31] "Y"              - NA              [31] 
 [32] "Y"              - NA              [32] 
 [33] ""               - NA              [33] 
 [34] ""               - NA              [34] 
 [35] "Y"              - NA              [35] 
 [36] ""               - NA              [36] 
 [37] ""               - NA              [37] 
 [38] "Y"              - NA              [38] 
 [39] ""               - NA              [39] 
 [40] ""               - NA              [40] 
 [41] "Y"              - NA              [41] 
 [42] "Y"              - NA              [42] 
 [43] ""               - NA              [43] 
 [44] "Y"              - NA              [44] 
 [45] "Y"              - NA              [45] 
 [46] "Y"              - NA              [46] 
 [47] ""               - NA              [47] 
 [48] "Y"              - NA              [48] 
 [49] "Y"              - NA              [49] 
 [50] "Y"              - NA              [50] 
 [51] "Y"              - NA              [51] 
 [52] ""               - NA              [52] 
 [53] "Y"              - NA              [53] 
 [54] "Y"              - NA              [54] 
 [55] "Y"              - NA              [55] 
 [56] ""               - NA              [56] 
 [57] "Y"              - NA              [57] 
 [58] ""               - NA              [58] 
 [59] "Y"              - NA              [59] 
 [60] ""               - NA              [60] 
 [61] "Y"              - NA              [61] 
 [62] "Y"              - NA              [62] 
 [63] "Y"              - NA              [63] 
 [64] "Y"              - NA              [64] 
 [65] "Y"              - NA              [65] 
 [66] "Y"              - NA              [66] 
 [67] "Y"              - NA              [67] 
 [68] "Y"              - NA              [68] 
 [69] "Y"              - NA              [69] 
 [70] "Y"              - NA              [70] 
 [71] ""               - NA              [71] 
 [72] ""               - NA              [72] 
 [73] ""               - NA              [73] 
 [74] ""               - NA              [74] 
 [75] "Y"              - NA              [75] 
 [76] "Y"              - NA              [76] 
 [77] "Y"              - NA              [77] 
 [78] "Y"              - NA              [78] 
 [79] "Y"              - NA              [79] 
 [80] "Y"              - NA              [80] 
 [81] "Y"              - NA              [81] 
 [82] ""               - NA              [82] 
 [83] ""               - NA              [83] 
 [84] "Y"              - NA              [84] 
 [85] "Y"              - NA              [85] 
 [86] "Y"              - NA              [86] 
 [87] "Y"              - NA              [87] 
 [88] "Y"              - NA              [88] 
 [89] "Y"              - NA              [89] 
 [90] "Y"              - NA              [90] 
 [91] ""               - NA              [91] 
 [92] "Y"              - NA              [92] 
 [93] ""               - NA              [93] 
 [94] ""               - NA              [94] 
 [95] "Y"              - NA              [95] 
 [96] "Y"              - NA              [96] 
 [97] ""               - NA              [97] 
 [98] "Y"              - NA              [98] 
 [99] "Y"              - NA              [99] 
[100] "Y"              - NA              [100]
[101] ""               - NA              [101]
[102] ""               - NA              [102]
[103] "Y"              - NA              [103]
[104] "Y"              - NA              [104]
[105] "Y"              - NA              [105]
[106] ""               - NA              [106]
[107] "Y"              - NA              [107]
[108] "Y"              - NA              [108]
[109] ""               - NA              [109]
[110] ""               - NA              [110]
[111] "Y"              - NA              [111]
[112] ""               - NA              [112]
[113] "Y"              - NA              [113]
[114] "Y"              - NA              [114]
[115] "Y"              - NA              [115]
[116] "Y"              - NA              [116]
[117] ""               - NA              [117]
[118] "Y"              - NA              [118]
[119] ""               - NA              [119]
[120] ""               - NA              [120]
[121] "Y"              - NA              [121]
[122] ""               - NA              [122]
[123] ""               - NA              [123]
[124] ""               - NA              [124]
[125] "Y"              - NA              [125]
[126] ""               - NA              [126]
[127] "Y"              - NA              [127]
[128] "Y"              - NA              [128]
[129] "Y"              - NA              [129]
[130] ""               - NA              [130]
[131] "Y"              - NA              [131]
[132] ""               - NA              [132]
[133] "Y"              - NA              [133]
[134] ""               - NA              [134]
[135] ""               - NA              [135]
[136] "Y"              - NA              [136]
[137] ""               - NA              [137]
[138] ""               - NA              [138]
[139] "Y"              - NA              [139]
[140] "Y"              - NA              [140]
[141] "Y"              - NA              [141]
[142] "Y"              - NA              [142]
[143] "Y"              - NA              [143]
[144] "Y"              - NA              [144]
[145] ""               - NA              [145]
[146] "Y"              - NA              [146]
[147] ""               - NA              [147]
[148] ""               - NA              [148]
[149] ""               - NA              [149]
[150] "Y"              - NA              [150]
[151] ""               - NA              [151]
[152] "Y"              - NA              [152]
[153] "Y"              - NA              [153]
[154] ""               - NA              [154]
[155] "Y"              - NA              [155]
[156] ""               - NA              [156]
[157] "Y"              - NA              [157]
[158] "Y"              - NA              [158]
[159] ""               - NA              [159]
[160] "Y"              - NA              [160]
[161] ""               - NA              [161]
[162] ""               - NA              [162]
[163] "Y"              - NA              [163]
[164] "Y"              - NA              [164]
[165] "Y"              - NA              [165]
[166] "Y"              - NA              [166]
[167] "Y"              - NA              [167]
[168] ""               - NA              [168]
[169] ""               - NA              [169]
[170] ""               - NA              [170]
[171] ""               - NA              [171]
[172] "Y"              - NA              [172]
[173] "Y"              - NA              [173]
[174] "Y"              - NA              [174]
[175] "Y"              - NA              [175]
[176] "Y"              - NA              [176]
[177] "Y"              - NA              [177]
[178] "Y"              - NA              [178]
[179] ""               - NA              [179]
[180] "Y"              - NA              [180]
[181] ""               - NA              [181]
[182] "Y"              - NA              [182]
[183] ""               - NA              [183]
[184] "Y"              - NA              [184]
[185] ""               - NA              [185]
[186] "Y"              - NA              [186]
[187] "Y"              - NA              [187]
[188] ""               - NA              [188]
[189] ""               - NA              [189]
[190] ""               - NA              [190]
[191] "Y"              - NA              [191]
[192] ""               - NA              [192]
[193] ""               - NA              [193]
[194] ""               - NA              [194]
[195] ""               - NA              [195]
[196] "Y"              - NA              [196]
[197] ""               - NA              [197]
[198] "Y"              - NA              [198]
[199] ""               - NA              [199]
[200] ""               - NA              [200]
[201] ""               - NA              [201]
[202] "Y"              - NA              [202]
[203] ""               - NA              [203]
[204] "Y"              - NA              [204]
[205] "Y"              - NA              [205]
[206] ""               - NA              [206]
[207] "Y"              - NA              [207]
[208] "Y"              - NA              [208]
[209] ""               - NA              [209]
[210] "Y"              - NA              [210]
[211] ""               - NA              [211]
[212] ""               - NA              [212]
[213] "Y"              - NA              [213]
[214] ""               - NA              [214]
[215] "Y"              - NA              [215]
[216] "Y"              - NA              [216]
[217] "Y"              - NA              [217]
[218] ""               - NA              [218]
[219] ""               - NA              [219]
[220] "Y"              - NA              [220]
[221] ""               - NA              [221]
[222] ""               - NA              [222]
[223] ""               - NA              [223]
[224] ""               - NA              [224]
[225] "Y"              - NA              [225]
[226] "Y"              - NA              [226]
[227] "Y"              - NA              [227]
[228] "Y"              - NA              [228]
[229] "Y"              - NA              [229]
[230] ""               - NA              [230]
[231] "Y"              - NA              [231]
[232] ""               - NA              [232]
[233] ""               - NA              [233]
[234] ""               - NA              [234]
[235] ""               - NA              [235]
[236] ""               - NA              [236]
[237] ""               - NA              [237]
[238] "Y"              - NA              [238]
[239] "Y"              - NA              [239]
[240] "Y"              - NA              [240]
[241] ""               - NA              [241]
[242] "Y"              - NA              [242]
[243] "Y"              - NA              [243]
[244] "Y"              - NA              [244]
[245] ""               - NA              [245]
[246] ""               - NA              [246]
[247] "Y"              - NA              [247]
[248] "Y"              - NA              [248]
[249] "Y"              - NA              [249]
[250] ""               - NA              [250]
[251] "Y"              - NA              [251]
[252] ""               - NA              [252]
[253] "Y"              - NA              [253]
[254] "Y"              - NA              [254]

      CADAM.ADSL[[31]] | ADAM.ADSL[[31]]      
  [1] ""               - NA              [1]  
  [2] "Y"              - NA              [2]  
  [3] ""               - NA              [3]  
  [4] ""               - NA              [4]  
  [5] ""               - NA              [5]  
  [6] "Y"              - NA              [6]  
  [7] ""               - NA              [7]  
  [8] "Y"              - NA              [8]  
  [9] "Y"              - NA              [9]  
 [10] ""               - NA              [10] 
 [11] ""               - NA              [11] 
 [12] ""               - NA              [12] 
 [13] "Y"              - NA              [13] 
 [14] ""               - NA              [14] 
 [15] ""               - NA              [15] 
 [16] "Y"              - NA              [16] 
 [17] "Y"              - NA              [17] 
 [18] "Y"              - NA              [18] 
 [19] ""               - NA              [19] 
 [20] ""               - NA              [20] 
 [21] ""               - NA              [21] 
 [22] ""               - NA              [22] 
 [23] ""               - NA              [23] 
 [24] ""               - NA              [24] 
 [25] ""               - NA              [25] 
 [26] "Y"              - NA              [26] 
 [27] "Y"              - NA              [27] 
 [28] ""               - NA              [28] 
 [29] ""               - NA              [29] 
 [30] "Y"              - NA              [30] 
 [31] ""               - NA              [31] 
 [32] ""               - NA              [32] 
 [33] ""               - NA              [33] 
 [34] ""               - NA              [34] 
 [35] ""               - NA              [35] 
 [36] ""               - NA              [36] 
 [37] ""               - NA              [37] 
 [38] ""               - NA              [38] 
 [39] ""               - NA              [39] 
 [40] ""               - NA              [40] 
 [41] "Y"              - NA              [41] 
 [42] ""               - NA              [42] 
 [43] ""               - NA              [43] 
 [44] "Y"              - NA              [44] 
 [45] "Y"              - NA              [45] 
 [46] ""               - NA              [46] 
 [47] ""               - NA              [47] 
 [48] "Y"              - NA              [48] 
 [49] ""               - NA              [49] 
 [50] "Y"              - NA              [50] 
 [51] ""               - NA              [51] 
 [52] ""               - NA              [52] 
 [53] "Y"              - NA              [53] 
 [54] ""               - NA              [54] 
 [55] ""               - NA              [55] 
 [56] ""               - NA              [56] 
 [57] ""               - NA              [57] 
 [58] ""               - NA              [58] 
 [59] "Y"              - NA              [59] 
 [60] ""               - NA              [60] 
 [61] "Y"              - NA              [61] 
 [62] ""               - NA              [62] 
 [63] ""               - NA              [63] 
 [64] "Y"              - NA              [64] 
 [65] "Y"              - NA              [65] 
 [66] "Y"              - NA              [66] 
 [67] "Y"              - NA              [67] 
 [68] "Y"              - NA              [68] 
 [69] ""               - NA              [69] 
 [70] "Y"              - NA              [70] 
 [71] ""               - NA              [71] 
 [72] ""               - NA              [72] 
 [73] ""               - NA              [73] 
 [74] ""               - NA              [74] 
 [75] ""               - NA              [75] 
 [76] "Y"              - NA              [76] 
 [77] ""               - NA              [77] 
 [78] "Y"              - NA              [78] 
 [79] "Y"              - NA              [79] 
 [80] ""               - NA              [80] 
 [81] "Y"              - NA              [81] 
 [82] ""               - NA              [82] 
 [83] ""               - NA              [83] 
 [84] ""               - NA              [84] 
 [85] ""               - NA              [85] 
 [86] ""               - NA              [86] 
 [87] ""               - NA              [87] 
 [88] "Y"              - NA              [88] 
 [89] ""               - NA              [89] 
 [90] "Y"              - NA              [90] 
 [91] ""               - NA              [91] 
 [92] "Y"              - NA              [92] 
 [93] ""               - NA              [93] 
 [94] ""               - NA              [94] 
 [95] "Y"              - NA              [95] 
 [96] "Y"              - NA              [96] 
 [97] ""               - NA              [97] 
 [98] ""               - NA              [98] 
 [99] ""               - NA              [99] 
[100] "Y"              - NA              [100]
[101] ""               - NA              [101]
[102] ""               - NA              [102]
[103] "Y"              - NA              [103]
[104] "Y"              - NA              [104]
[105] ""               - NA              [105]
[106] ""               - NA              [106]
[107] "Y"              - NA              [107]
[108] "Y"              - NA              [108]
[109] ""               - NA              [109]
[110] ""               - NA              [110]
[111] "Y"              - NA              [111]
[112] ""               - NA              [112]
[113] ""               - NA              [113]
[114] "Y"              - NA              [114]
[115] "Y"              - NA              [115]
[116] ""               - NA              [116]
[117] ""               - NA              [117]
[118] ""               - NA              [118]
[119] ""               - NA              [119]
[120] ""               - NA              [120]
[121] "Y"              - NA              [121]
[122] ""               - NA              [122]
[123] ""               - NA              [123]
[124] ""               - NA              [124]
[125] "Y"              - NA              [125]
[126] ""               - NA              [126]
[127] "Y"              - NA              [127]
[128] ""               - NA              [128]
[129] ""               - NA              [129]
[130] ""               - NA              [130]
[131] "Y"              - NA              [131]
[132] ""               - NA              [132]
[133] "Y"              - NA              [133]
[134] ""               - NA              [134]
[135] ""               - NA              [135]
[136] "Y"              - NA              [136]
[137] ""               - NA              [137]
[138] ""               - NA              [138]
[139] "Y"              - NA              [139]
[140] "Y"              - NA              [140]
[141] "Y"              - NA              [141]
[142] "Y"              - NA              [142]
[143] ""               - NA              [143]
[144] ""               - NA              [144]
[145] ""               - NA              [145]
[146] "Y"              - NA              [146]
[147] ""               - NA              [147]
[148] ""               - NA              [148]
[149] ""               - NA              [149]
[150] ""               - NA              [150]
[151] ""               - NA              [151]
[152] "Y"              - NA              [152]
[153] "Y"              - NA              [153]
[154] ""               - NA              [154]
[155] "Y"              - NA              [155]
[156] ""               - NA              [156]
[157] "Y"              - NA              [157]
[158] "Y"              - NA              [158]
[159] ""               - NA              [159]
[160] "Y"              - NA              [160]
[161] ""               - NA              [161]
[162] ""               - NA              [162]
[163] ""               - NA              [163]
[164] "Y"              - NA              [164]
[165] "Y"              - NA              [165]
[166] "Y"              - NA              [166]
[167] "Y"              - NA              [167]
[168] ""               - NA              [168]
[169] ""               - NA              [169]
[170] ""               - NA              [170]
[171] ""               - NA              [171]
[172] "Y"              - NA              [172]
[173] "Y"              - NA              [173]
[174] "Y"              - NA              [174]
[175] "Y"              - NA              [175]
[176] "Y"              - NA              [176]
[177] ""               - NA              [177]
[178] "Y"              - NA              [178]
[179] ""               - NA              [179]
[180] ""               - NA              [180]
[181] ""               - NA              [181]
[182] "Y"              - NA              [182]
[183] ""               - NA              [183]
[184] "Y"              - NA              [184]
[185] ""               - NA              [185]
[186] "Y"              - NA              [186]
[187] "Y"              - NA              [187]
[188] ""               - NA              [188]
[189] ""               - NA              [189]
[190] ""               - NA              [190]
[191] "Y"              - NA              [191]
[192] ""               - NA              [192]
[193] ""               - NA              [193]
[194] ""               - NA              [194]
[195] ""               - NA              [195]
[196] "Y"              - NA              [196]
[197] ""               - NA              [197]
[198] "Y"              - NA              [198]
[199] ""               - NA              [199]
[200] ""               - NA              [200]
[201] ""               - NA              [201]
[202] ""               - NA              [202]
[203] ""               - NA              [203]
[204] "Y"              - NA              [204]
[205] ""               - NA              [205]
[206] ""               - NA              [206]
[207] ""               - NA              [207]
[208] "Y"              - NA              [208]
[209] ""               - NA              [209]
[210] "Y"              - NA              [210]
[211] ""               - NA              [211]
[212] ""               - NA              [212]
[213] ""               - NA              [213]
[214] ""               - NA              [214]
[215] "Y"              - NA              [215]
[216] "Y"              - NA              [216]
[217] "Y"              - NA              [217]
[218] ""               - NA              [218]
[219] ""               - NA              [219]
[220] "Y"              - NA              [220]
[221] ""               - NA              [221]
[222] ""               - NA              [222]
[223] ""               - NA              [223]
[224] ""               - NA              [224]
[225] "Y"              - NA              [225]
[226] "Y"              - NA              [226]
[227] "Y"              - NA              [227]
[228] ""               - NA              [228]
[229] ""               - NA              [229]
[230] ""               - NA              [230]
[231] "Y"              - NA              [231]
[232] ""               - NA              [232]
[233] ""               - NA              [233]
[234] ""               - NA              [234]
[235] ""               - NA              [235]
[236] ""               - NA              [236]
[237] ""               - NA              [237]
[238] ""               - NA              [238]
[239] ""               - NA              [239]
[240] ""               - NA              [240]
[241] ""               - NA              [241]
[242] "Y"              - NA              [242]
[243] "Y"              - NA              [243]
[244] ""               - NA              [244]
[245] ""               - NA              [245]
[246] ""               - NA              [246]
[247] "Y"              - NA              [247]
[248] ""               - NA              [248]
[249] "Y"              - NA              [249]
[250] ""               - NA              [250]
[251] ""               - NA              [251]
[252] ""               - NA              [252]
[253] "Y"              - NA              [253]
[254] ""               - NA              [254]

`CADAM.ADSL[[33]][22:28]`: 23.40 33.60 24.60 23.50 27.10 26.00 21.40
 `ADAM.ADSL[[33]][22:28]`: 23.40 33.60 24.60 23.40 27.10 26.00 21.40

`CADAM.ADSL[[33]][38:44]`: 25.70 20.20 40.10 34.50 NA 23.50 32.00
 `ADAM.ADSL[[33]][38:44]`: 25.70 20.20 40.10 34.60 NA 23.50 32.00

`CADAM.ADSL[[33]][61:67]`: 21.30 20.80 25.60 21.80 20.10 24.80 27.00
 `ADAM.ADSL[[33]][61:67]`: 21.30 20.80 25.60 21.70 20.10 24.80 27.00

`CADAM.ADSL[[33]][68:74]`: 24.30 28.10 23.90 15.10 24.60 20.10 26.20
 `ADAM.ADSL[[33]][68:74]`: 24.30 28.10 23.90 15.00 24.60 20.10 26.20

      CADAM.ADSL[[33]] | ADAM.ADSL[[33]]      
 [95] 27.50            | 27.50           [95] 
 [96] 22.70            | 22.70           [96] 
 [97] 21.20            | 21.20           [97] 
 [98] 21.00            - 20.90           [98] 
 [99] 33.20            | 33.20           [99] 
[100] 26.90            - 26.80           [100]
[101] 24.20            | 24.20           [101]
[102] 20.90            | 20.90           [102]
[103] 20.60            | 20.60           [103]

`CADAM.ADSL[[34]][39:45]`: "<25" ">=30" ">=30" "<25" "<25" ">=30" "25-<30"
`ADAM.ADSL[[34]][39:45]`:  "<25" ">=30" ">=30" NA    "<25" ">=30" "25-<30"

`CADAM.ADSL[[35]][38:44]`: 148.60 156.20 162.60 171.50 154.90 177.80 165.10
 `ADAM.ADSL[[35]][38:44]`: 148.60 156.20 162.60 171.40 154.90 177.80 165.10

`CADAM.ADSL[[35]][138:144]`: 165.10 166.40 149.90 171.50 170.20 172.70 167.60
 `ADAM.ADSL[[35]][138:144]`: 165.10 166.40 149.90 171.40 170.20 172.70 167.60

`CADAM.ADSL[[35]][242:248]`: 158.80 158.80 186.20 171.50 156.20 162.60 174.00
 `ADAM.ADSL[[35]][242:248]`: 158.80 158.80 186.20 171.40 156.20 162.60 174.00

`CADAM.ADSL[[36]][1:7]`: 54.40 80.30 99.30 88.50 62.60 67.10 78.00
 `ADAM.ADSL[[36]][1:7]`: 54.40 80.30 99.30 88.40 62.60 67.10 78.00

     CADAM.ADSL[[36]] | ADAM.ADSL[[36]]     
[22] 77.10            | 77.10           [22]
[23] 95.90            | 95.90           [23]
[24] 69.00            | 69.00           [24]
[25] 56.30            - 56.20           [25]
[26] 78.50            | 78.50           [26]
[27] 82.10            | 82.10           [27]
[28] 66.70            | 66.70           [28]
[29] 77.10            | 77.10           [29]
[30] 70.80            | 70.80           [30]
[31] 56.30            - 56.20           [31]
[32] 80.30            | 80.30           [32]
[33] 64.90            | 64.90           [33]
[34] 84.80            | 84.80           [34]

`CADAM.ADSL[[36]][52:58]`: 49.90 59.40 55.80 56.30 45.40 55.30 76.20
 `ADAM.ADSL[[36]][52:58]`: 49.90 59.40 55.80 56.20 45.40 55.30 76.20

`CADAM.ADSL[[36]][61:67]`: 46.70 66.70 81.00 63.10 55.50 80.70 75.80
 `ADAM.ADSL[[36]][61:67]`: 46.70 66.70 81.00 63.00 55.50 80.70 75.80

`CADAM.ADSL[[36]][68:74]`: 73.50 77.80 51.70 41.10 64.40 49.90 54.40
 `ADAM.ADSL[[36]][68:74]`: 73.50 77.80 51.70 41.00 64.40 49.90 54.40

`CADAM.ADSL[[36]][75:81]`: 46.30 73.00 48.80 88.50 59.90 68.50 78.50
 `ADAM.ADSL[[36]][75:81]`: 46.30 73.00 48.80 88.40 59.90 68.50 78.50

      CADAM.ADSL[[36]] | ADAM.ADSL[[36]]      
 [95] 84.40            | 84.40           [95] 
 [96] 48.50            | 48.50           [96] 
 [97] 44.50            | 44.50           [97] 
 [98] 57.20            - 57.10           [98] 
 [99] 96.20            | 96.20           [99] 
[100] 56.30            - 56.20           [100]
[101] 54.40            | 54.40           [101]
[102] 58.70            | 58.70           [102]
[103] 57.80            | 57.80           [103]

`CADAM.ADSL[[36]][152:158]`: 68.50 70.30 72.60 56.30 70.80 58.10 51.70
 `ADAM.ADSL[[36]][152:158]`: 68.50 70.30 72.60 56.20 70.80 58.10 51.70

`CADAM.ADSL[[36]][175:181]`: 71.70 46.70 42.60 56.30 89.40 82.10 34.00
 `ADAM.ADSL[[36]][175:181]`: 71.70 46.70 42.60 56.20 89.40 82.10 34.00

`CADAM.ADSL[[36]][207:213]`: 75.80 59.90 67.10 69.90 54.40 79.80 75.30
 `ADAM.ADSL[[36]][207:213]`: 75.80 59.90 67.10 69.80 54.40 79.80 75.30

`CADAM.ADSL[[36]][215:221]`: 72.60 76.70 80.70 69.90 52.60 45.80 59.40
 `ADAM.ADSL[[36]][215:221]`: 72.60 76.70 80.70 69.80 52.60 45.80 59.40

      CADAM.ADSL[[37]] | ADAM.ADSL[[37]]      
  [1] 16.0             - NA              [1]  
  [2] 14.0             - NA              [2]  
  [3] 16.0             - NA              [3]  
  [4] 12.0             - NA              [4]  
  [5] 9.0              - NA              [5]  
  [6] 8.0              - NA              [6]  
  [7] 18.0             - NA              [7]  
  [8] 22.0             - NA              [8]  
  [9] 12.0             - NA              [9]  
 [10] 14.0             - NA              [10] 
 [11] 12.0             - NA              [11] 
 [12] 10.0             - NA              [12] 
 [13] 16.0             - NA              [13] 
 [14] 15.0             - NA              [14] 
 [15] 6.0              - NA              [15] 
 [16] 16.0             - NA              [16] 
 [17] 15.0             - NA              [17] 
 [18] 16.0             - NA              [18] 
 [19] 12.0             - NA              [19] 
 [20] 13.0             - NA              [20] 
 [21] 12.0             - NA              [21] 
 [22] 18.0             - NA              [22] 
 [23] 11.0             - NA              [23] 
 [24] 12.0             - NA              [24] 
 [25] 14.0             - NA              [25] 
 [26] 16.0             - NA              [26] 
 [27] 15.0             - NA              [27] 
 [28] 20.0             - NA              [28] 
 [29] 18.0             - NA              [29] 
 [30] 24.0             - NA              [30] 
 [31] 15.0             - NA              [31] 
 [32] 10.0             - NA              [32] 
 [33] 13.0             - NA              [33] 
 [34] 12.0             - NA              [34] 
 [35] 12.0             - NA              [35] 
 [36] 16.0             - NA              [36] 
 [37] 10.0             - NA              [37] 
 [38] 12.0             - NA              [38] 
 [39] 18.0             - NA              [39] 
 [40] 12.0             - NA              [40] 
 [41] 14.0             - NA              [41] 
 [42] 18.0             - NA              [42] 
 [43] 12.0             - NA              [43] 
 [44] 10.0             - NA              [44] 
 [45] 17.0             - NA              [45] 
 [46] 6.0              - NA              [46] 
 [47] 8.0              - NA              [47] 
 [48] 16.0             - NA              [48] 
 [49] 16.0             - NA              [49] 
 [50] 12.0             - NA              [50] 
 [51] 5.0              - NA              [51] 
 [52] 12.0             - NA              [52] 
 [53] 12.0             - NA              [53] 
 [54] 12.0             - NA              [54] 
 [55] 8.0              - NA              [55] 
 [56] 12.0             - NA              [56] 
 [57] 11.0             - NA              [57] 
 [58] 7.0              - NA              [58] 
 [59] 12.0             - NA              [59] 
 [60] 12.0             - NA              [60] 
 [61] 12.0             - NA              [61] 
 [62] 16.0             - NA              [62] 
 [63] 14.0             - NA              [63] 
 [64] 12.0             - NA              [64] 
 [65] 18.0             - NA              [65] 
 [66] 12.0             - NA              [66] 
 [67] 16.0             - NA              [67] 
 [68] 12.0             - NA              [68] 
 [69] 8.0              - NA              [69] 
 [70] 13.0             - NA              [70] 
 [71] 12.0             - NA              [71] 
 [72] 14.0             - NA              [72] 
 [73] 10.0             - NA              [73] 
 [74] 12.0             - NA              [74] 
 [75] 16.0             - NA              [75] 
 [76] 14.0             - NA              [76] 
 [77] 16.0             - NA              [77] 
 [78] 12.0             - NA              [78] 
 [79] 16.0             - NA              [79] 
 [80] 16.0             - NA              [80] 
 [81] 9.0              - NA              [81] 
 [82] 12.0             - NA              [82] 
 [83] 11.0             - NA              [83] 
 [84] 16.0             - NA              [84] 
 [85] 12.0             - NA              [85] 
 [86] 6.0              - NA              [86] 
 [87] 16.0             - NA              [87] 
 [88] 12.0             - NA              [88] 
 [89] 12.0             - NA              [89] 
 [90] 20.0             - NA              [90] 
 [91] 12.0             - NA              [91] 
 [92] 12.0             - NA              [92] 
 [93] 12.0             - NA              [93] 
 [94] 8.0              - NA              [94] 
 [95] 12.0             - NA              [95] 
 [96] 12.0             - NA              [96] 
 [97] 10.0             - NA              [97] 
 [98] 6.0              - NA              [98] 
 [99] 12.0             - NA              [99] 
[100] 13.0             - NA              [100]
[101] 12.0             - NA              [101]
[102] 15.0             - NA              [102]
[103] 11.0             - NA              [103]
[104] 8.0              - NA              [104]
[105] 14.0             - NA              [105]
[106] 7.0              - NA              [106]
[107] 18.0             - NA              [107]
[108] 12.0             - NA              [108]
[109] 12.0             - NA              [109]
[110] 12.0             - NA              [110]
[111] 8.0              - NA              [111]
[112] 9.0              - NA              [112]
[113] 8.0              - NA              [113]
[114] 12.0             - NA              [114]
[115] 12.0             - NA              [115]
[116] 8.0              - NA              [116]
[117] 12.0             - NA              [117]
[118] 11.0             - NA              [118]
[119] 12.0             - NA              [119]
[120] 18.0             - NA              [120]
[121] 13.0             - NA              [121]
[122] 12.0             - NA              [122]
[123] 18.0             - NA              [123]
[124] 13.0             - NA              [124]
[125] 12.0             - NA              [125]
[126] 12.0             - NA              [126]
[127] 16.0             - NA              [127]
[128] 8.0              - NA              [128]
[129] 13.0             - NA              [129]
[130] 13.0             - NA              [130]
[131] 8.0              - NA              [131]
[132] 12.0             - NA              [132]
[133] 21.0             - NA              [133]
[134] 12.0             - NA              [134]
[135] 20.0             - NA              [135]
[136] 9.0              - NA              [136]
[137] 16.0             - NA              [137]
[138] 12.0             - NA              [138]
[139] 14.0             - NA              [139]
[140] 12.0             - NA              [140]
[141] 6.0              - NA              [141]
[142] 8.0              - NA              [142]
[143] 18.0             - NA              [143]
[144] 6.0              - NA              [144]
[145] 10.0             - NA              [145]
[146] 12.0             - NA              [146]
[147] 16.0             - NA              [147]
[148] 13.0             - NA              [148]
[149] 16.0             - NA              [149]
[150] 16.0             - NA              [150]
[151] 16.0             - NA              [151]
[152] 16.0             - NA              [152]
[153] 12.0             - NA              [153]
[154] 12.0             - NA              [154]
[155] 8.0              - NA              [155]
[156] 12.0             - NA              [156]
[157] 12.0             - NA              [157]
[158] 12.0             - NA              [158]
[159] 16.0             - NA              [159]
[160] 10.0             - NA              [160]
[161] 12.0             - NA              [161]
[162] 12.0             - NA              [162]
[163] 14.0             - NA              [163]
[164] 16.0             - NA              [164]
[165] 12.0             - NA              [165]
[166] 3.0              - NA              [166]
[167] 12.0             - NA              [167]
[168] 8.0              - NA              [168]
[169] 8.0              - NA              [169]
[170] 16.0             - NA              [170]
[171] 12.0             - NA              [171]
[172] 12.0             - NA              [172]
[173] 12.0             - NA              [173]
[174] 16.0             - NA              [174]
[175] 20.0             - NA              [175]
[176] 12.0             - NA              [176]
[177] 12.0             - NA              [177]
[178] 12.0             - NA              [178]
[179] 16.0             - NA              [179]
[180] 6.0              - NA              [180]
[181] 12.0             - NA              [181]
[182] 18.0             - NA              [182]
[183] 12.0             - NA              [183]
[184] 12.0             - NA              [184]
[185] 9.0              - NA              [185]
[186] 12.0             - NA              [186]
[187] 12.0             - NA              [187]
[188] 8.0              - NA              [188]
[189] 6.0              - NA              [189]
[190] 16.0             - NA              [190]
[191] 13.0             - NA              [191]
[192] 12.0             - NA              [192]
[193] 12.0             - NA              [193]
[194] 16.0             - NA              [194]
[195] 16.0             - NA              [195]
[196] 13.0             - NA              [196]
[197] 12.0             - NA              [197]
[198] 9.0              - NA              [198]
[199] 16.0             - NA              [199]
[200] 6.0              - NA              [200]
[201] 10.0             - NA              [201]
[202] 16.0             - NA              [202]
[203] 14.0             - NA              [203]
[204] 12.0             - NA              [204]
[205] 12.0             - NA              [205]
[206] 7.0              - NA              [206]
[207] 13.0             - NA              [207]
[208] 12.0             - NA              [208]
[209] 11.0             - NA              [209]
[210] 16.0             - NA              [210]
[211] 12.0             - NA              [211]
[212] 12.0             - NA              [212]
[213] 12.0             - NA              [213]
[214] 12.0             - NA              [214]
[215] 8.0              - NA              [215]
[216] 12.0             - NA              [216]
[217] 8.0              - NA              [217]
[218] 8.0              - NA              [218]
[219] 12.0             - NA              [219]
[220] 18.0             - NA              [220]
[221] 14.0             - NA              [221]
[222] 12.0             - NA              [222]
[223] 12.0             - NA              [223]
[224] 12.0             - NA              [224]
[225] 9.0              - NA              [225]
[226] 16.0             - NA              [226]
[227] 12.0             - NA              [227]
[228] 13.0             - NA              [228]
[229] 14.0             - NA              [229]
[230] 12.0             - NA              [230]
[231] 16.0             - NA              [231]
[232] 8.0              - NA              [232]
[233] 10.0             - NA              [233]
[234] 14.0             - NA              [234]
[235] 15.0             - NA              [235]
[236] 17.0             - NA              [236]
[237] 16.0             - NA              [237]
[238] 12.0             - NA              [238]
[239] 16.0             - NA              [239]
[240] 14.0             - NA              [240]
[241] 12.0             - NA              [241]
[242] 14.0             - NA              [242]
[243] 16.0             - NA              [243]
[244] 12.0             - NA              [244]
[245] 14.0             - NA              [245]
[246] 16.0             - NA              [246]
[247] 12.0             - NA              [247]
[248] 21.0             - NA              [248]
[249] 21.0             - NA              [249]
[250] 18.0             - NA              [250]
[251] 12.0             - NA              [251]
[252] 15.0             - NA              [252]
[253] 10.0             - NA              [253]
[254] 16.0             - NA              [254]

      CADAM.ADSL[[44]] | ADAM.ADSL[[44]]      
  [1] 12.0             - NA              [1]  
  [2] 5.0              - NA              [2]  
  [3] 12.0             - NA              [3]  
  [4] 5.0              - NA              [4]  
  [5] 12.0             - NA              [5]  
  [6] 6.0              - NA              [6]  
  [7] 12.0             - NA              [7]  
  [8] 4.0              - NA              [8]  
  [9] 8.0              - NA              [9]  
 [10] 12.0             - NA              [10] 
 [11] 12.0             - NA              [11] 
 [12] 12.0             - NA              [12] 
 [13] 7.0              - NA              [13] 
 [14] 12.0             - NA              [14] 
 [15] 12.0             - NA              [15] 
 [16] 7.0              - NA              [16] 
 [17] 4.0              - NA              [17] 
 [18] 7.0              - NA              [18] 
 [19] 12.0             - NA              [19] 
 [20] 12.0             - NA              [20] 
 [21] 9.0              - NA              [21] 
 [22] 12.0             - NA              [22] 
 [23] 12.0             - NA              [23] 
 [24] 10.0             - NA              [24] 
 [25] 12.0             - NA              [25] 
 [26] 9.0              - NA              [26] 
 [27] 9.0              - NA              [27] 
 [28] 12.0             - NA              [28] 
 [29] 12.0             - NA              [29] 
 [30] 5.0              - NA              [30] 
 [31] 12.0             - NA              [31] 
 [32] 4.0              - NA              [32] 
 [33] 12.0             - NA              [33] 
 [34] 12.0             - NA              [34] 
 [35] 4.0              - NA              [35] 
 [36] 12.0             - NA              [36] 
 [37] 12.0             - NA              [37] 
 [38] 7.0              - NA              [38] 
 [39] 12.0             - NA              [39] 
 [40] 12.0             - NA              [40] 
 [41] 7.0              - NA              [41] 
 [42] 9.0              - NA              [42] 
 [43] 12.0             - NA              [43] 
 [44] 9.0              - NA              [44] 
 [45] 10.0             - NA              [45] 
 [46] 7.0              - NA              [46] 
 [47] 12.0             - NA              [47] 
 [48] 10.0             - NA              [48] 
 [49] 4.0              - NA              [49] 
 [50] 8.0              - NA              [50] 
 [51] 4.0              - NA              [51] 
 [52] 12.0             - NA              [52] 
 [53] 12.0             - NA              [53] 
 [54] 4.0              - NA              [54] 
 [55] 11.0             - NA              [55] 
 [56] 12.0             - NA              [56] 
 [57] 7.0              - NA              [57] 
 [58] 12.0             - NA              [58] 
 [59] 4.0              - NA              [59] 
 [60] 12.0             - NA              [60] 
 [61] 7.0              - NA              [61] 
 [62] 5.0              - NA              [62] 
 [63] 11.0             - NA              [63] 
 [64] 7.0              - NA              [64] 
 [65] 6.0              - NA              [65] 
 [66] 9.0              - NA              [66] 
 [67] 8.0              - NA              [67] 
 [68] 10.0             - NA              [68] 
 [69] 12.0             - NA              [69] 
 [70] 9.0              - NA              [70] 
 [71] 12.0             - NA              [71] 
 [72] 12.0             - NA              [72] 
 [73] 12.0             - NA              [73] 
 [74] 12.0             - NA              [74] 
 [75] 11.0             - NA              [75] 
 [76] 8.0              - NA              [76] 
 [77] 9.0              - NA              [77] 
 [78] 8.0              - NA              [78] 
 [79] 7.0              - NA              [79] 
 [80] 10.0             - NA              [80] 
 [81] 9.0              - NA              [81] 
 [82] 12.0             - NA              [82] 
 [83] 12.0             - NA              [83] 
 [84] 8.0              - NA              [84] 
 [85] 12.0             - NA              [85] 
 [86] 4.0              - NA              [86] 
 [87] 12.0             - NA              [87] 
 [88] 10.0             - NA              [88] 
 [89] 5.0              - NA              [89] 
 [90] 4.0              - NA              [90] 
 [91] 12.0             - NA              [91] 
 [92] 10.0             - NA              [92] 
 [93] 12.0             - NA              [93] 
 [94] 12.0             - NA              [94] 
 [95] 11.0             - NA              [95] 
 [96] 9.0              - NA              [96] 
 [97] 12.0             - NA              [97] 
 [98] 7.0              - NA              [98] 
 [99] 4.0              - NA              [99] 
[100] 11.0             - NA              [100]
[101] 12.0             - NA              [101]
[102] 12.0             - NA              [102]
[103] 7.0              - NA              [103]
[104] 4.0              - NA              [104]
[105] 4.0              - NA              [105]
[106] 12.0             - NA              [106]
[107] 4.0              - NA              [107]
[108] 5.0              - NA              [108]
[109] 12.0             - NA              [109]
[110] 12.0             - NA              [110]
[111] 7.0              - NA              [111]
[112] 12.0             - NA              [112]
[113] 9.0              - NA              [113]
[114] 5.0              - NA              [114]
[115] 7.0              - NA              [115]
[116] 4.0              - NA              [116]
[117] 12.0             - NA              [117]
[118] 8.0              - NA              [118]
[119] 12.0             - NA              [119]
[120] 12.0             - NA              [120]
[121] 10.0             - NA              [121]
[122] 12.0             - NA              [122]
[123] 12.0             - NA              [123]
[124] 12.0             - NA              [124]
[125] 9.0              - NA              [125]
[126] 12.0             - NA              [126]
[127] 8.0              - NA              [127]
[128] 4.0              - NA              [128]
[129] 11.0             - NA              [129]
[130] 12.0             - NA              [130]
[131] 8.0              - NA              [131]
[132] 12.0             - NA              [132]
[133] 5.0              - NA              [133]
[134] 12.0             - NA              [134]
[135] 12.0             - NA              [135]
[136] 10.0             - NA              [136]
[137] 12.0             - NA              [137]
[138] 12.0             - NA              [138]
[139] 9.0              - NA              [139]
[140] 8.0              - NA              [140]
[141] 10.0             - NA              [141]
[142] 9.0              - NA              [142]
[143] 11.0             - NA              [143]
[144] 9.0              - NA              [144]
[145] 12.0             - NA              [145]
[146] 11.0             - NA              [146]
[147] 12.0             - NA              [147]
[148] 12.0             - NA              [148]
[149] 12.0             - NA              [149]
[150] 4.0              - NA              [150]
[151] 12.0             - NA              [151]
[152] 4.0              - NA              [152]
[153] 4.0              - NA              [153]
[154] 12.0             - NA              [154]
[155] 7.0              - NA              [155]
[156] 12.0             - NA              [156]
[157] 9.0              - NA              [157]
[158] 8.0              - NA              [158]
[159] 12.0             - NA              [159]
[160] 11.0             - NA              [160]
[161] 12.0             - NA              [161]
[162] 12.0             - NA              [162]
[163] 4.0              - NA              [163]
[164] 7.0              - NA              [164]
[165] 5.0              - NA              [165]
[166] 7.0              - NA              [166]
[167] 10.0             - NA              [167]
[168] 12.0             - NA              [168]
[169] 12.0             - NA              [169]
[170] 12.0             - NA              [170]
[171] 12.0             - NA              [171]
[172] 11.0             - NA              [172]
[173] 4.0              - NA              [173]
[174] 8.0              - NA              [174]
[175] 9.0              - NA              [175]
[176] 9.0              - NA              [176]
[177] 6.0              - NA              [177]
[178] 11.0             - NA              [178]
[179] 12.0             - NA              [179]
[180] 12.0             - NA              [180]
[181] 12.0             - NA              [181]
[182] 10.0             - NA              [182]
[183] 12.0             - NA              [183]
[184] 5.0              - NA              [184]
[185] 12.0             - NA              [185]
[186] 9.0              - NA              [186]
[187] 4.0              - NA              [187]
[188] 12.0             - NA              [188]
[189] 12.0             - NA              [189]
[190] 12.0             - NA              [190]
[191] 7.0              - NA              [191]
[192] 12.0             - NA              [192]
[193] 12.0             - NA              [193]
[194] 12.0             - NA              [194]
[195] 12.0             - NA              [195]
[196] 10.0             - NA              [196]
[197] 12.0             - NA              [197]
[198] 9.0              - NA              [198]
[199] 12.0             - NA              [199]
[200] 12.0             - NA              [200]
[201] 12.0             - NA              [201]
[202] 4.0              - NA              [202]
[203] 12.0             - NA              [203]
[204] 9.0              - NA              [204]
[205] 7.0              - NA              [205]
[206] 12.0             - NA              [206]
[207] 5.0              - NA              [207]
[208] 9.0              - NA              [208]
[209] 12.0             - NA              [209]
[210] 4.0              - NA              [210]
[211] 12.0             - NA              [211]
[212] 12.0             - NA              [212]
[213] 4.0              - NA              [213]
[214] 12.0             - NA              [214]
[215] 10.0             - NA              [215]
[216] 8.0              - NA              [216]
[217] 7.0              - NA              [217]
[218] 12.0             - NA              [218]
[219] 12.0             - NA              [219]
[220] 10.0             - NA              [220]
[221] 12.0             - NA              [221]
[222] 12.0             - NA              [222]
[223] 12.0             - NA              [223]
[224] 12.0             - NA              [224]
[225] 11.0             - NA              [225]
[226] 7.0              - NA              [226]
[227] 9.0              - NA              [227]
[228] 7.0              - NA              [228]
[229] 11.0             - NA              [229]
[230] 12.0             - NA              [230]
[231] 9.0              - NA              [231]
[232] 12.0             - NA              [232]
[233] 12.0             - NA              [233]
[234] 12.0             - NA              [234]
[235] 12.0             - NA              [235]
[236] 12.0             - NA              [236]
[237] 12.0             - NA              [237]
[238] 8.0              - NA              [238]
[239] 8.0              - NA              [239]
[240] 12.0             - NA              [240]
[241] 12.0             - NA              [241]
[242] 4.0              - NA              [242]
[243] 7.0              - NA              [243]
[244] 12.0             - NA              [244]
[245] 12.0             - NA              [245]
[246] 12.0             - NA              [246]
[247] 5.0              - NA              [247]
[248] 9.0              - NA              [248]
[249] 11.0             - NA              [249]
[250] 12.0             - NA              [250]
[251] 9.0              - NA              [251]
[252] 12.0             - NA              [252]
[253] 9.0              - NA              [253]
[254] 8.0              - NA              [254]

      CADAM.ADSL[[46]]              | ADAM.ADSL[[46]]      
  [1] "COMPLETED"                   - NA              [1]  
  [2] "ADVERSE EVENT"               - NA              [2]  
  [3] "COMPLETED"                   - NA              [3]  
  [4] "STUDY TERMINATED BY SPONSOR" - NA              [4]  
  [5] "COMPLETED"                   - NA              [5]  
  [6] "ADVERSE EVENT"               - NA              [6]  
  [7] "COMPLETED"                   - NA              [7]  
  [8] "ADVERSE EVENT"               - NA              [8]  
  [9] "ADVERSE EVENT"               - NA              [9]  
 [10] "COMPLETED"                   - NA              [10] 
 [11] "COMPLETED"                   - NA              [11] 
 [12] "COMPLETED"                   - NA              [12] 
 [13] "ADVERSE EVENT"               - NA              [13] 
 [14] "COMPLETED"                   - NA              [14] 
 [15] "COMPLETED"                   - NA              [15] 
 [16] "ADVERSE EVENT"               - NA              [16] 
 [17] "ADVERSE EVENT"               - NA              [17] 
 [18] "ADVERSE EVENT"               - NA              [18] 
 [19] "COMPLETED"                   - NA              [19] 
 [20] "COMPLETED"                   - NA              [20] 
 [21] "DEATH"                       - NA              [21] 
 [22] "COMPLETED"                   - NA              [22] 
 [23] "COMPLETED"                   - NA              [23] 
 [24] "WITHDRAWAL BY SUBJECT"       - NA              [24] 
 [25] "COMPLETED"                   - NA              [25] 
 [26] "ADVERSE EVENT"               - NA              [26] 
 [27] "ADVERSE EVENT"               - NA              [27] 
 [28] "COMPLETED"                   - NA              [28] 
 [29] "COMPLETED"                   - NA              [29] 
 [30] "ADVERSE EVENT"               - NA              [30] 
 [31] "STUDY TERMINATED BY SPONSOR" - NA              [31] 
 [32] "PHYSICIAN DECISION"          - NA              [32] 
 [33] "COMPLETED"                   - NA              [33] 
 [34] "COMPLETED"                   - NA              [34] 
 [35] "PROTOCOL VIOLATION"          - NA              [35] 
 [36] "COMPLETED"                   - NA              [36] 
 [37] "COMPLETED"                   - NA              [37] 
 [38] "WITHDRAWAL BY SUBJECT"       - NA              [38] 
 [39] "COMPLETED"                   - NA              [39] 
 [40] "COMPLETED"                   - NA              [40] 
 [41] "ADVERSE EVENT"               - NA              [41] 
 [42] "WITHDRAWAL BY SUBJECT"       - NA              [42] 
 [43] "COMPLETED"                   - NA              [43] 
 [44] "ADVERSE EVENT"               - NA              [44] 
 [45] "ADVERSE EVENT"               - NA              [45] 
 [46] "LOST TO FOLLOW-UP"           - NA              [46] 
 [47] "COMPLETED"                   - NA              [47] 
 [48] "ADVERSE EVENT"               - NA              [48] 
 [49] "PROTOCOL VIOLATION"          - NA              [49] 
 [50] "ADVERSE EVENT"               - NA              [50] 
 [51] "WITHDRAWAL BY SUBJECT"       - NA              [51] 
 [52] "COMPLETED"                   - NA              [52] 
 [53] "ADVERSE EVENT"               - NA              [53] 
 [54] "WITHDRAWAL BY SUBJECT"       - NA              [54] 
 [55] "WITHDRAWAL BY SUBJECT"       - NA              [55] 
 [56] "COMPLETED"                   - NA              [56] 
 [57] "PROTOCOL VIOLATION"          - NA              [57] 
 [58] "COMPLETED"                   - NA              [58] 
 [59] "ADVERSE EVENT"               - NA              [59] 
 [60] "COMPLETED"                   - NA              [60] 
 [61] "ADVERSE EVENT"               - NA              [61] 
 [62] "WITHDRAWAL BY SUBJECT"       - NA              [62] 
 [63] "WITHDRAWAL BY SUBJECT"       - NA              [63] 
 [64] "ADVERSE EVENT"               - NA              [64] 
 [65] "ADVERSE EVENT"               - NA              [65] 
 [66] "ADVERSE EVENT"               - NA              [66] 
 [67] "ADVERSE EVENT"               - NA              [67] 
 [68] "ADVERSE EVENT"               - NA              [68] 
 [69] "WITHDRAWAL BY SUBJECT"       - NA              [69] 
 [70] "ADVERSE EVENT"               - NA              [70] 
 [71] "COMPLETED"                   - NA              [71] 
 [72] "COMPLETED"                   - NA              [72] 
 [73] "COMPLETED"                   - NA              [73] 
 [74] "COMPLETED"                   - NA              [74] 
 [75] "WITHDRAWAL BY SUBJECT"       - NA              [75] 
 [76] "ADVERSE EVENT"               - NA              [76] 
 [77] "WITHDRAWAL BY SUBJECT"       - NA              [77] 
 [78] "ADVERSE EVENT"               - NA              [78] 
 [79] "ADVERSE EVENT"               - NA              [79] 
 [80] "PROTOCOL VIOLATION"          - NA              [80] 
 [81] "ADVERSE EVENT"               - NA              [81] 
 [82] "COMPLETED"                   - NA              [82] 
 [83] "COMPLETED"                   - NA              [83] 
 [84] "WITHDRAWAL BY SUBJECT"       - NA              [84] 
 [85] "DEATH"                       - NA              [85] 
 [86] "WITHDRAWAL BY SUBJECT"       - NA              [86] 
 [87] "LOST TO FOLLOW-UP"           - NA              [87] 
 [88] "ADVERSE EVENT"               - NA              [88] 
 [89] "PHYSICIAN DECISION"          - NA              [89] 
 [90] "ADVERSE EVENT"               - NA              [90] 
 [91] "COMPLETED"                   - NA              [91] 
 [92] "ADVERSE EVENT"               - NA              [92] 
 [93] "COMPLETED"                   - NA              [93] 
 [94] "COMPLETED"                   - NA              [94] 
 [95] "ADVERSE EVENT"               - NA              [95] 
 [96] "ADVERSE EVENT"               - NA              [96] 
 [97] "COMPLETED"                   - NA              [97] 
 [98] "WITHDRAWAL BY SUBJECT"       - NA              [98] 
 [99] "PROTOCOL VIOLATION"          - NA              [99] 
[100] "ADVERSE EVENT"               - NA              [100]
[101] "COMPLETED"                   - NA              [101]
[102] "COMPLETED"                   - NA              [102]
[103] "ADVERSE EVENT"               - NA              [103]
[104] "ADVERSE EVENT"               - NA              [104]
[105] "WITHDRAWAL BY SUBJECT"       - NA              [105]
[106] "COMPLETED"                   - NA              [106]
[107] "ADVERSE EVENT"               - NA              [107]
[108] "ADVERSE EVENT"               - NA              [108]
[109] "COMPLETED"                   - NA              [109]
[110] "COMPLETED"                   - NA              [110]
[111] "ADVERSE EVENT"               - NA              [111]
[112] "COMPLETED"                   - NA              [112]
[113] "PHYSICIAN DECISION"          - NA              [113]
[114] "ADVERSE EVENT"               - NA              [114]
[115] "ADVERSE EVENT"               - NA              [115]
[116] "WITHDRAWAL BY SUBJECT"       - NA              [116]
[117] "COMPLETED"                   - NA              [117]
[118] "WITHDRAWAL BY SUBJECT"       - NA              [118]
[119] "COMPLETED"                   - NA              [119]
[120] "COMPLETED"                   - NA              [120]
[121] "ADVERSE EVENT"               - NA              [121]
[122] "COMPLETED"                   - NA              [122]
[123] "COMPLETED"                   - NA              [123]
[124] "COMPLETED"                   - NA              [124]
[125] "ADVERSE EVENT"               - NA              [125]
[126] "COMPLETED"                   - NA              [126]
[127] "ADVERSE EVENT"               - NA              [127]
[128] "PROTOCOL VIOLATION"          - NA              [128]
[129] "STUDY TERMINATED BY SPONSOR" - NA              [129]
[130] "COMPLETED"                   - NA              [130]
[131] "ADVERSE EVENT"               - NA              [131]
[132] "COMPLETED"                   - NA              [132]
[133] "ADVERSE EVENT"               - NA              [133]
[134] "COMPLETED"                   - NA              [134]
[135] "COMPLETED"                   - NA              [135]
[136] "ADVERSE EVENT"               - NA              [136]
[137] "COMPLETED"                   - NA              [137]
[138] "COMPLETED"                   - NA              [138]
[139] "ADVERSE EVENT"               - NA              [139]
[140] "ADVERSE EVENT"               - NA              [140]
[141] "ADVERSE EVENT"               - NA              [141]
[142] "ADVERSE EVENT"               - NA              [142]
[143] "LACK OF EFFICACY"            - NA              [143]
[144] "STUDY TERMINATED BY SPONSOR" - NA              [144]
[145] "COMPLETED"                   - NA              [145]
[146] "ADVERSE EVENT"               - NA              [146]
[147] "COMPLETED"                   - NA              [147]
[148] "COMPLETED"                   - NA              [148]
[149] "COMPLETED"                   - NA              [149]
[150] "WITHDRAWAL BY SUBJECT"       - NA              [150]
[151] "COMPLETED"                   - NA              [151]
[152] "ADVERSE EVENT"               - NA              [152]
[153] "ADVERSE EVENT"               - NA              [153]
[154] "COMPLETED"                   - NA              [154]
[155] "ADVERSE EVENT"               - NA              [155]
[156] "COMPLETED"                   - NA              [156]
[157] "ADVERSE EVENT"               - NA              [157]
[158] "ADVERSE EVENT"               - NA              [158]
[159] "COMPLETED"                   - NA              [159]
[160] "ADVERSE EVENT"               - NA              [160]
[161] "COMPLETED"                   - NA              [161]
[162] "COMPLETED"                   - NA              [162]
[163] "DEATH"                       - NA              [163]
[164] "ADVERSE EVENT"               - NA              [164]
[165] "ADVERSE EVENT"               - NA              [165]
[166] "ADVERSE EVENT"               - NA              [166]
[167] "ADVERSE EVENT"               - NA              [167]
[168] "COMPLETED"                   - NA              [168]
[169] "COMPLETED"                   - NA              [169]
[170] "COMPLETED"                   - NA              [170]
[171] "COMPLETED"                   - NA              [171]
[172] "ADVERSE EVENT"               - NA              [172]
[173] "ADVERSE EVENT"               - NA              [173]
[174] "ADVERSE EVENT"               - NA              [174]
[175] "ADVERSE EVENT"               - NA              [175]
[176] "ADVERSE EVENT"               - NA              [176]
[177] "WITHDRAWAL BY SUBJECT"       - NA              [177]
[178] "ADVERSE EVENT"               - NA              [178]
[179] "COMPLETED"                   - NA              [179]
[180] "WITHDRAWAL BY SUBJECT"       - NA              [180]
[181] "COMPLETED"                   - NA              [181]
[182] "ADVERSE EVENT"               - NA              [182]
[183] "COMPLETED"                   - NA              [183]
[184] "ADVERSE EVENT"               - NA              [184]
[185] "COMPLETED"                   - NA              [185]
[186] "ADVERSE EVENT"               - NA              [186]
[187] "ADVERSE EVENT"               - NA              [187]
[188] "COMPLETED"                   - NA              [188]
[189] "COMPLETED"                   - NA              [189]
[190] "COMPLETED"                   - NA              [190]
[191] "ADVERSE EVENT"               - NA              [191]
[192] "COMPLETED"                   - NA              [192]
[193] "COMPLETED"                   - NA              [193]
[194] "COMPLETED"                   - NA              [194]
[195] "COMPLETED"                   - NA              [195]
[196] "ADVERSE EVENT"               - NA              [196]
[197] "COMPLETED"                   - NA              [197]
[198] "ADVERSE EVENT"               - NA              [198]
[199] "COMPLETED"                   - NA              [199]
[200] "COMPLETED"                   - NA              [200]
[201] "COMPLETED"                   - NA              [201]
[202] "STUDY TERMINATED BY SPONSOR" - NA              [202]
[203] "COMPLETED"                   - NA              [203]
[204] "ADVERSE EVENT"               - NA              [204]
[205] "WITHDRAWAL BY SUBJECT"       - NA              [205]
[206] "COMPLETED"                   - NA              [206]
[207] "WITHDRAWAL BY SUBJECT"       - NA              [207]
[208] "ADVERSE EVENT"               - NA              [208]
[209] "COMPLETED"                   - NA              [209]
[210] "ADVERSE EVENT"               - NA              [210]
[211] "COMPLETED"                   - NA              [211]
[212] "COMPLETED"                   - NA              [212]
[213] "WITHDRAWAL BY SUBJECT"       - NA              [213]
[214] "COMPLETED"                   - NA              [214]
[215] "ADVERSE EVENT"               - NA              [215]
[216] "ADVERSE EVENT"               - NA              [216]
[217] "ADVERSE EVENT"               - NA              [217]
[218] "COMPLETED"                   - NA              [218]
[219] "COMPLETED"                   - NA              [219]
[220] "ADVERSE EVENT"               - NA              [220]
[221] "COMPLETED"                   - NA              [221]
[222] "COMPLETED"                   - NA              [222]
[223] "COMPLETED"                   - NA              [223]
[224] "COMPLETED"                   - NA              [224]
[225] "ADVERSE EVENT"               - NA              [225]
[226] "ADVERSE EVENT"               - NA              [226]
[227] "ADVERSE EVENT"               - NA              [227]
[228] "WITHDRAWAL BY SUBJECT"       - NA              [228]
[229] "WITHDRAWAL BY SUBJECT"       - NA              [229]
[230] "COMPLETED"                   - NA              [230]
[231] "ADVERSE EVENT"               - NA              [231]
[232] "COMPLETED"                   - NA              [232]
[233] "COMPLETED"                   - NA              [233]
[234] "COMPLETED"                   - NA              [234]
[235] "COMPLETED"                   - NA              [235]
[236] "COMPLETED"                   - NA              [236]
[237] "COMPLETED"                   - NA              [237]
[238] "LACK OF EFFICACY"            - NA              [238]
[239] "LACK OF EFFICACY"            - NA              [239]
[240] "STUDY TERMINATED BY SPONSOR" - NA              [240]
[241] "COMPLETED"                   - NA              [241]
[242] "ADVERSE EVENT"               - NA              [242]
[243] "ADVERSE EVENT"               - NA              [243]
[244] "STUDY TERMINATED BY SPONSOR" - NA              [244]
[245] "COMPLETED"                   - NA              [245]
[246] "COMPLETED"                   - NA              [246]
[247] "ADVERSE EVENT"               - NA              [247]
[248] "WITHDRAWAL BY SUBJECT"       - NA              [248]
[249] "ADVERSE EVENT"               - NA              [249]
[250] "COMPLETED"                   - NA              [250]
[251] "WITHDRAWAL BY SUBJECT"       - NA              [251]
[252] "COMPLETED"                   - NA              [252]
[253] "ADVERSE EVENT"               - NA              [253]
[254] "LACK OF EFFICACY"            - NA              [254]

      CADAM.ADSL[[47]]     | ADAM.ADSL[[47]]      
  [1] "Completed"          - NA              [1]  
  [2] "Adverse Event"      - NA              [2]  
  [3] "Completed"          - NA              [3]  
  [4] "Sponsor Decision"   - NA              [4]  
  [5] "Completed"          - NA              [5]  
  [6] "Adverse Event"      - NA              [6]  
  [7] "Completed"          - NA              [7]  
  [8] "Adverse Event"      - NA              [8]  
  [9] "Adverse Event"      - NA              [9]  
 [10] "Completed"          - NA              [10] 
 [11] "Completed"          - NA              [11] 
 [12] "Completed"          - NA              [12] 
 [13] "Adverse Event"      - NA              [13] 
 [14] "Completed"          - NA              [14] 
 [15] "Completed"          - NA              [15] 
 [16] "Adverse Event"      - NA              [16] 
 [17] "Adverse Event"      - NA              [17] 
 [18] "Adverse Event"      - NA              [18] 
 [19] "Completed"          - NA              [19] 
 [20] "Completed"          - NA              [20] 
 [21] "Death"              - NA              [21] 
 [22] "Completed"          - NA              [22] 
 [23] "Completed"          - NA              [23] 
 [24] "Withdrew Consent"   - NA              [24] 
 [25] "Completed"          - NA              [25] 
 [26] "Adverse Event"      - NA              [26] 
 [27] "Adverse Event"      - NA              [27] 
 [28] "Completed"          - NA              [28] 
 [29] "Completed"          - NA              [29] 
 [30] "Adverse Event"      - NA              [30] 
 [31] "Sponsor Decision"   - NA              [31] 
 [32] "Physician Decision" - NA              [32] 
 [33] "Completed"          - NA              [33] 
 [34] "Completed"          - NA              [34] 
 [35] "Protocol Violation" - NA              [35] 
 [36] "Completed"          - NA              [36] 
 [37] "Completed"          - NA              [37] 
 [38] "Withdrew Consent"   - NA              [38] 
 [39] "Completed"          - NA              [39] 
 [40] "Completed"          - NA              [40] 
 [41] "Adverse Event"      - NA              [41] 
 [42] "Withdrew Consent"   - NA              [42] 
 [43] "Completed"          - NA              [43] 
 [44] "Adverse Event"      - NA              [44] 
 [45] "Adverse Event"      - NA              [45] 
 [46] "Lost to Follow-up"  - NA              [46] 
 [47] "Completed"          - NA              [47] 
 [48] "Adverse Event"      - NA              [48] 
 [49] "I/E Not Met"        - NA              [49] 
 [50] "Adverse Event"      - NA              [50] 
 [51] "Withdrew Consent"   - NA              [51] 
 [52] "Completed"          - NA              [52] 
 [53] "Adverse Event"      - NA              [53] 
 [54] "Withdrew Consent"   - NA              [54] 
 [55] "Withdrew Consent"   - NA              [55] 
 [56] "Completed"          - NA              [56] 
 [57] "Protocol Violation" - NA              [57] 
 [58] "Completed"          - NA              [58] 
 [59] "Adverse Event"      - NA              [59] 
 [60] "Completed"          - NA              [60] 
 [61] "Adverse Event"      - NA              [61] 
 [62] "Withdrew Consent"   - NA              [62] 
 [63] "Withdrew Consent"   - NA              [63] 
 [64] "Adverse Event"      - NA              [64] 
 [65] "Adverse Event"      - NA              [65] 
 [66] "Adverse Event"      - NA              [66] 
 [67] "Adverse Event"      - NA              [67] 
 [68] "Adverse Event"      - NA              [68] 
 [69] "Withdrew Consent"   - NA              [69] 
 [70] "Adverse Event"      - NA              [70] 
 [71] "Completed"          - NA              [71] 
 [72] "Completed"          - NA              [72] 
 [73] "Completed"          - NA              [73] 
 [74] "Completed"          - NA              [74] 
 [75] "Withdrew Consent"   - NA              [75] 
 [76] "Adverse Event"      - NA              [76] 
 [77] "Withdrew Consent"   - NA              [77] 
 [78] "Adverse Event"      - NA              [78] 
 [79] "Adverse Event"      - NA              [79] 
 [80] "Protocol Violation" - NA              [80] 
 [81] "Adverse Event"      - NA              [81] 
 [82] "Completed"          - NA              [82] 
 [83] "Completed"          - NA              [83] 
 [84] "Withdrew Consent"   - NA              [84] 
 [85] "Death"              - NA              [85] 
 [86] "Withdrew Consent"   - NA              [86] 
 [87] "Lost to Follow-up"  - NA              [87] 
 [88] "Adverse Event"      - NA              [88] 
 [89] "Physician Decision" - NA              [89] 
 [90] "Adverse Event"      - NA              [90] 
 [91] "Completed"          - NA              [91] 
 [92] "Adverse Event"      - NA              [92] 
 [93] "Completed"          - NA              [93] 
 [94] "Completed"          - NA              [94] 
 [95] "Adverse Event"      - NA              [95] 
 [96] "Adverse Event"      - NA              [96] 
 [97] "Completed"          - NA              [97] 
 [98] "Withdrew Consent"   - NA              [98] 
 [99] "I/E Not Met"        - NA              [99] 
[100] "Adverse Event"      - NA              [100]
[101] "Completed"          - NA              [101]
[102] "Completed"          - NA              [102]
[103] "Adverse Event"      - NA              [103]
[104] "Adverse Event"      - NA              [104]
[105] "Withdrew Consent"   - NA              [105]
[106] "Completed"          - NA              [106]
[107] "Adverse Event"      - NA              [107]
[108] "Adverse Event"      - NA              [108]
[109] "Completed"          - NA              [109]
[110] "Completed"          - NA              [110]
[111] "Adverse Event"      - NA              [111]
[112] "Completed"          - NA              [112]
[113] "Physician Decision" - NA              [113]
[114] "Adverse Event"      - NA              [114]
[115] "Adverse Event"      - NA              [115]
[116] "Withdrew Consent"   - NA              [116]
[117] "Completed"          - NA              [117]
[118] "Withdrew Consent"   - NA              [118]
[119] "Completed"          - NA              [119]
[120] "Completed"          - NA              [120]
[121] "Adverse Event"      - NA              [121]
[122] "Completed"          - NA              [122]
[123] "Completed"          - NA              [123]
[124] "Completed"          - NA              [124]
[125] "Adverse Event"      - NA              [125]
[126] "Completed"          - NA              [126]
[127] "Adverse Event"      - NA              [127]
[128] "I/E Not Met"        - NA              [128]
[129] "Sponsor Decision"   - NA              [129]
[130] "Completed"          - NA              [130]
[131] "Adverse Event"      - NA              [131]
[132] "Completed"          - NA              [132]
[133] "Adverse Event"      - NA              [133]
[134] "Completed"          - NA              [134]
[135] "Completed"          - NA              [135]
[136] "Adverse Event"      - NA              [136]
[137] "Completed"          - NA              [137]
[138] "Completed"          - NA              [138]
[139] "Adverse Event"      - NA              [139]
[140] "Adverse Event"      - NA              [140]
[141] "Adverse Event"      - NA              [141]
[142] "Adverse Event"      - NA              [142]
[143] "Lack of Efficacy"   - NA              [143]
[144] "Sponsor Decision"   - NA              [144]
[145] "Completed"          - NA              [145]
[146] "Adverse Event"      - NA              [146]
[147] "Completed"          - NA              [147]
[148] "Completed"          - NA              [148]
[149] "Completed"          - NA              [149]
[150] "Withdrew Consent"   - NA              [150]
[151] "Completed"          - NA              [151]
[152] "Adverse Event"      - NA              [152]
[153] "Adverse Event"      - NA              [153]
[154] "Completed"          - NA              [154]
[155] "Adverse Event"      - NA              [155]
[156] "Completed"          - NA              [156]
[157] "Adverse Event"      - NA              [157]
[158] "Adverse Event"      - NA              [158]
[159] "Completed"          - NA              [159]
[160] "Adverse Event"      - NA              [160]
[161] "Completed"          - NA              [161]
[162] "Completed"          - NA              [162]
[163] "Death"              - NA              [163]
[164] "Adverse Event"      - NA              [164]
[165] "Adverse Event"      - NA              [165]
[166] "Adverse Event"      - NA              [166]
[167] "Adverse Event"      - NA              [167]
[168] "Completed"          - NA              [168]
[169] "Completed"          - NA              [169]
[170] "Completed"          - NA              [170]
[171] "Completed"          - NA              [171]
[172] "Adverse Event"      - NA              [172]
[173] "Adverse Event"      - NA              [173]
[174] "Adverse Event"      - NA              [174]
[175] "Adverse Event"      - NA              [175]
[176] "Adverse Event"      - NA              [176]
[177] "Withdrew Consent"   - NA              [177]
[178] "Adverse Event"      - NA              [178]
[179] "Completed"          - NA              [179]
[180] "Withdrew Consent"   - NA              [180]
[181] "Completed"          - NA              [181]
[182] "Adverse Event"      - NA              [182]
[183] "Completed"          - NA              [183]
[184] "Adverse Event"      - NA              [184]
[185] "Completed"          - NA              [185]
[186] "Adverse Event"      - NA              [186]
[187] "Adverse Event"      - NA              [187]
[188] "Completed"          - NA              [188]
[189] "Completed"          - NA              [189]
[190] "Completed"          - NA              [190]
[191] "Adverse Event"      - NA              [191]
[192] "Completed"          - NA              [192]
[193] "Completed"          - NA              [193]
[194] "Completed"          - NA              [194]
[195] "Completed"          - NA              [195]
[196] "Adverse Event"      - NA              [196]
[197] "Completed"          - NA              [197]
[198] "Adverse Event"      - NA              [198]
[199] "Completed"          - NA              [199]
[200] "Completed"          - NA              [200]
[201] "Completed"          - NA              [201]
[202] "Sponsor Decision"   - NA              [202]
[203] "Completed"          - NA              [203]
[204] "Adverse Event"      - NA              [204]
[205] "Withdrew Consent"   - NA              [205]
[206] "Completed"          - NA              [206]
[207] "Withdrew Consent"   - NA              [207]
[208] "Adverse Event"      - NA              [208]
[209] "Completed"          - NA              [209]
[210] "Adverse Event"      - NA              [210]
[211] "Completed"          - NA              [211]
[212] "Completed"          - NA              [212]
[213] "Withdrew Consent"   - NA              [213]
[214] "Completed"          - NA              [214]
[215] "Adverse Event"      - NA              [215]
[216] "Adverse Event"      - NA              [216]
[217] "Adverse Event"      - NA              [217]
[218] "Completed"          - NA              [218]
[219] "Completed"          - NA              [219]
[220] "Adverse Event"      - NA              [220]
[221] "Completed"          - NA              [221]
[222] "Completed"          - NA              [222]
[223] "Completed"          - NA              [223]
[224] "Completed"          - NA              [224]
[225] "Adverse Event"      - NA              [225]
[226] "Adverse Event"      - NA              [226]
[227] "Adverse Event"      - NA              [227]
[228] "Withdrew Consent"   - NA              [228]
[229] "Withdrew Consent"   - NA              [229]
[230] "Completed"          - NA              [230]
[231] "Adverse Event"      - NA              [231]
[232] "Completed"          - NA              [232]
[233] "Completed"          - NA              [233]
[234] "Completed"          - NA              [234]
[235] "Completed"          - NA              [235]
[236] "Completed"          - NA              [236]
[237] "Completed"          - NA              [237]
[238] "Lack of Efficacy"   - NA              [238]
[239] "Lack of Efficacy"   - NA              [239]
[240] "Sponsor Decision"   - NA              [240]
[241] "Completed"          - NA              [241]
[242] "Adverse Event"      - NA              [242]
[243] "Adverse Event"      - NA              [243]
[244] "Sponsor Decision"   - NA              [244]
[245] "Completed"          - NA              [245]
[246] "Completed"          - NA              [246]
[247] "Adverse Event"      - NA              [247]
[248] "Withdrew Consent"   - NA              [248]
[249] "Adverse Event"      - NA              [249]
[250] "Completed"          - NA              [250]
[251] "Withdrew Consent"   - NA              [251]
[252] "Completed"          - NA              [252]
[253] "Adverse Event"      - NA              [253]
[254] "Lack of Efficacy"   - NA              [254]

      CADAM.ADSL[[48]] | ADAM.ADSL[[48]]      
  [1] 23.0             - 0.0             [1]  
  [2] 23.0             - 0.0             [2]  
  [3] 23.0             - 0.0             [3]  
  [4] 23.0             - 0.0             [4]  
  [5] 21.0             - 0.0             [5]  
  [6] 23.0             - 0.0             [6]  
  [7] 10.0             - 0.0             [7]  
  [8] 23.0             - 0.0             [8]  
  [9] 20.0             - 0.0             [9]  
 [10] 20.0             - 0.0             [10] 
 [11] 19.0             - 0.0             [11] 
 [12] 21.0             - 0.0             [12] 
 [13] 22.0             - 0.0             [13] 
 [14] 21.0             - 0.0             [14] 
 [15] 10.0             - 0.0             [15] 
 [16] 19.0             - 0.0             [16] 
 [17] 10.0             - 0.0             [17] 
 [18] 23.0             - 0.0             [18] 
 [19] 23.0             - 0.0             [19] 
 [20] 21.0             - 0.0             [20] 
 [21] 12.0             - 0.0             [21] 
 [22] 20.0             - 0.0             [22] 
 [23] 23.0             - 0.0             [23] 
 [24] 22.0             - 0.0             [24] 
 [25] 22.0             - 0.0             [25] 
 [26] 23.0             - 0.0             [26] 
 [27] 23.0             - 0.0             [27] 
 [28] 20.0             - 0.0             [28] 
 [29] 23.0             - 0.0             [29] 
 [30] 23.0             - 0.0             [30] 
 [31] 23.0             - 0.0             [31] 
 [32] 23.0             - 0.0             [32] 
 [33] 22.0             - 0.0             [33] 
 [34] 22.0             - 0.0             [34] 
 [35] 11.0             - 0.0             [35] 
 [36] 23.0             - 0.0             [36] 
 [37] 18.0             - 0.0             [37] 
 [38] 17.0             - 0.0             [38] 
 [39] 22.0             - 0.0             [39] 
 [40] 15.0             - 0.0             [40] 
 [41] 23.0             - 0.0             [41] 
 [42] 23.0             - 0.0             [42] 
 [43] 23.0             - 0.0             [43] 
 [44] 23.0             - 0.0             [44] 
 [45] 17.0             - 0.0             [45] 
 [46] 22.0             - 0.0             [46] 
 [47] 22.0             - 0.0             [47] 
 [48] 14.0             - 0.0             [48] 
 [49] 11.0             - 0.0             [49] 
 [50] 22.0             - 0.0             [50] 
 [51] 12.0             - 0.0             [51] 
 [52] 19.0             - 0.0             [52] 
 [53] 13.0             - 0.0             [53] 
 [54] 14.0             - 0.0             [54] 
 [55] 20.0             - 0.0             [55] 
 [56] 23.0             - 0.0             [56] 
 [57] 10.0             - 0.0             [57] 
 [58] 12.0             - 0.0             [58] 
 [59] 23.0             - 0.0             [59] 
 [60] 16.0             - 0.0             [60] 
 [61] 21.0             - 0.0             [61] 
 [62] 21.0             - 0.0             [62] 
 [63] 17.0             - 0.0             [63] 
 [64] 21.0             - 0.0             [64] 
 [65] 17.0             - 0.0             [65] 
 [66] 20.0             - 0.0             [66] 
 [67] 17.0             - 0.0             [67] 
 [68] 18.0             - 0.0             [68] 
 [69] 20.0             - 0.0             [69] 
 [70] 16.0             - 0.0             [70] 
 [71] 22.0             - 0.0             [71] 
 [72] 23.0             - 0.0             [72] 
 [73] 16.0             - 0.0             [73] 
 [74] 22.0             - 0.0             [74] 
 [75] 15.0             - 0.0             [75] 
 [76] 21.0             - 0.0             [76] 
 [77] 16.0             - 0.0             [77] 
 [78] 16.0             - 0.0             [78] 
 [79] 23.0             - 0.0             [79] 
 [80] 18.0             - 0.0             [80] 
 [81] 22.0             - 0.0             [81] 
 [82] 22.0             - 0.0             [82] 
 [83] 20.0             - 0.0             [83] 
 [84] 20.0             - 0.0             [84] 
 [85] 23.0             - 0.0             [85] 
 [86] 18.0             - 0.0             [86] 
 [87] 23.0             - 0.0             [87] 
 [88] 16.0             - 0.0             [88] 
 [89] 15.0             - 0.0             [89] 
 [90] 19.0             - 0.0             [90] 
 [91] 23.0             - 0.0             [91] 
 [92] 23.0             - 0.0             [92] 
 [93] 10.0             - 0.0             [93] 
 [94] 23.0             - 0.0             [94] 
 [95] 19.0             - 0.0             [95] 
 [96] 20.0             - 0.0             [96] 
 [97] 15.0             - 0.0             [97] 
 [98] 14.0             - 0.0             [98] 
 [99] 19.0             - 0.0             [99] 
[100] 19.0             - 0.0             [100]
[101] 21.0             - 0.0             [101]
[102] 20.0             - 0.0             [102]
[103] 16.0             - 0.0             [103]
[104] 20.0             - 0.0             [104]
[105] 24.0             - 0.0             [105]
[106] 21.0             - 0.0             [106]
[107] 17.0             - 0.0             [107]
[108] 18.0             - 0.0             [108]
[109] 23.0             - 0.0             [109]
[110] 17.0             - 0.0             [110]
[111] 16.0             - 0.0             [111]
[112] 13.0             - 0.0             [112]
[113] 10.0             - 0.0             [113]
[114] 14.0             - 0.0             [114]
[115] 17.0             - 0.0             [115]
[116] 22.0             - 0.0             [116]
[117] 12.0             - 0.0             [117]
[118] 15.0             - 0.0             [118]
[119] 10.0             - 0.0             [119]
[120] 16.0             - 0.0             [120]
[121] 23.0             - 0.0             [121]
[122] 22.0             - 0.0             [122]
[123] 15.0             - 0.0             [123]
[124] 18.0             - 0.0             [124]
[125] 22.0             - 0.0             [125]
[126] 13.0             - 0.0             [126]
[127] 16.0             - 0.0             [127]
[128] 17.0             - 0.0             [128]
[129] 20.0             - 0.0             [129]
[130] 15.0             - 0.0             [130]
[131] 19.0             - 0.0             [131]
[132] 15.0             - 0.0             [132]
[133] 10.0             - 0.0             [133]
[134] 15.0             - 0.0             [134]
[135] 16.0             - 0.0             [135]
[136] 21.0             - 0.0             [136]
[137] 23.0             - 0.0             [137]
[138] 11.0             - 0.0             [138]
[139] 16.0             - 0.0             [139]
[140] 20.0             - 0.0             [140]
[141] 14.0             - 0.0             [141]
[142] 24.0             - 0.0             [142]
[143] 20.0             - 0.0             [143]
[144] 16.0             - 0.0             [144]
[145] 10.0             - 0.0             [145]
[146] 21.0             - 0.0             [146]
[147] 17.0             - 0.0             [147]
[148] 14.0             - 0.0             [148]
[149] 11.0             - 0.0             [149]
[150] 10.0             - 0.0             [150]
[151] 23.0             - 0.0             [151]
[152] 18.0             - 0.0             [152]
[153] 17.0             - 0.0             [153]
[154] 12.0             - 0.0             [154]
[155] 11.0             - 0.0             [155]
[156] 20.0             - 0.0             [156]
[157] 14.0             - 0.0             [157]
[158] 20.0             - 0.0             [158]
[159] 23.0             - 0.0             [159]
[160] 10.0             - 0.0             [160]
[161] 14.0             - 0.0             [161]
[162] 21.0             - 0.0             [162]
[163] 14.0             - 0.0             [163]
[164] 18.0             - 0.0             [164]
[165] 23.0             - 0.0             [165]
[166] 13.0             - 0.0             [166]
[167] 18.0             - 0.0             [167]
[168] 16.0             - 0.0             [168]
[169] 11.0             - 0.0             [169]
[170] 20.0             - 0.0             [170]
[171] 20.0             - 0.0             [171]
[172] 14.0             - 0.0             [172]
[173] 11.0             - 0.0             [173]
[174] 18.0             - 0.0             [174]
[175] 14.0             - 0.0             [175]
[176] 13.0             - 0.0             [176]
[177] 12.0             - 0.0             [177]
[178] 12.0             - 0.0             [178]
[179] 23.0             - 0.0             [179]
[180] 13.0             - 0.0             [180]
[181] 13.0             - 0.0             [181]
[182] 14.0             - 0.0             [182]
[183] 23.0             - 0.0             [183]
[184] 18.0             - 0.0             [184]
[185] 23.0             - 0.0             [185]
[186] 23.0             - 0.0             [186]
[187] 18.0             - 0.0             [187]
[188] 16.0             - 0.0             [188]
[189] 11.0             - 0.0             [189]
[190] 23.0             - 0.0             [190]
[191] 18.0             - 0.0             [191]
[192] 21.0             - 0.0             [192]
[193] 23.0             - 0.0             [193]
[194] 13.0             - 0.0             [194]
[195] 23.0             - 0.0             [195]
[196] 23.0             - 0.0             [196]
[197] 17.0             - 0.0             [197]
[198] 18.0             - 0.0             [198]
[199] 19.0             - 0.0             [199]
[200] 19.0             - 0.0             [200]
[201] 17.0             - 0.0             [201]
[202] 22.0             - 0.0             [202]
[203] 23.0             - 0.0             [203]
[204] 23.0             - 0.0             [204]
[205] 10.0             - 0.0             [205]
[206] 20.0             - 0.0             [206]
[207] 12.0             - 0.0             [207]
[208] 23.0             - 0.0             [208]
[209] 22.0             - 0.0             [209]
[210] 10.0             - 0.0             [210]
[211] 22.0             - 0.0             [211]
[212] 11.0             - 0.0             [212]
[213] 16.0             - 0.0             [213]
[214] 14.0             - 0.0             [214]
[215] 17.0             - 0.0             [215]
[216] 20.0             - 0.0             [216]
[217] 11.0             - 0.0             [217]
[218] 22.0             - 0.0             [218]
[219] 21.0             - 0.0             [219]
[220] 22.0             - 0.0             [220]
[221] 20.0             - 0.0             [221]
[222] 23.0             - 0.0             [222]
[223] 19.0             - 0.0             [223]
[224] 21.0             - 0.0             [224]
[225] 21.0             - 0.0             [225]
[226] 22.0             - 0.0             [226]
[227] 11.0             - 0.0             [227]
[228] 13.0             - 0.0             [228]
[229] 11.0             - 0.0             [229]
[230] 17.0             - 0.0             [230]
[231] 23.0             - 0.0             [231]
[232] 20.0             - 0.0             [232]
[233] 22.0             - 0.0             [233]
[234] 22.0             - 0.0             [234]
[235] 13.0             - 0.0             [235]
[236] 20.0             - 0.0             [236]
[237] 22.0             - 0.0             [237]
[238] 23.0             - 0.0             [238]
[239] 21.0             - 0.0             [239]
[240] 12.0             - 0.0             [240]
[241] 21.0             - 0.0             [241]
[242] 20.0             - 0.0             [242]
[243] 17.0             - 0.0             [243]
[244] 13.0             - 0.0             [244]
[245] 16.0             - 0.0             [245]
[246] 22.0             - 0.0             [246]
[247] 19.0             - 0.0             [247]
[248] 10.0             - 0.0             [248]
[249] 18.0             - 0.0             [249]
[250] 16.0             - 0.0             [250]
[251] 13.0             - 0.0             [251]
[252] 16.0             - 0.0             [252]
[253] 16.0             - 0.0             [253]
[254] 19.0             - 0.0             [254]

Thank you!

Josh: jcook0312@outlook.com

Richann: richann.watson@datarichconsulting.com